MCPcopy
hub / github.com/google/guava / remove

Method remove

guava/src/com/google/common/collect/TreeRangeSet.java:225–266  ·  view source on GitHub ↗
(Range<C> rangeToRemove)

Source from the content-addressed store, hash-verified

223 }
224
225 @Override
226 public void remove(Range<C> rangeToRemove) {
227 checkNotNull(rangeToRemove);
228
229 if (rangeToRemove.isEmpty()) {
230 return;
231 }
232
233 // We will use { } to illustrate ranges currently in the range set, and < >
234 // to illustrate rangeToRemove.
235
236 Entry<Cut<C>, Range<C>> entryBelowLb = rangesByLowerBound.lowerEntry(rangeToRemove.lowerBound);
237 if (entryBelowLb != null) {
238 // { <
239 Range<C> rangeBelowLb = entryBelowLb.getValue();
240 if (rangeBelowLb.upperBound.compareTo(rangeToRemove.lowerBound) >= 0) {
241 // { < }, and we will need to subdivide
242 if (rangeToRemove.hasUpperBound()
243 && rangeBelowLb.upperBound.compareTo(rangeToRemove.upperBound) >= 0) {
244 // { < > }
245 replaceRangeWithSameLowerBound(
246 Range.create(rangeToRemove.upperBound, rangeBelowLb.upperBound));
247 }
248 replaceRangeWithSameLowerBound(
249 Range.create(rangeBelowLb.lowerBound, rangeToRemove.lowerBound));
250 }
251 }
252
253 Entry<Cut<C>, Range<C>> entryBelowUb = rangesByLowerBound.floorEntry(rangeToRemove.upperBound);
254 if (entryBelowUb != null) {
255 // { >
256 Range<C> rangeBelowUb = entryBelowUb.getValue();
257 if (rangeToRemove.hasUpperBound()
258 && rangeBelowUb.upperBound.compareTo(rangeToRemove.upperBound) >= 0) {
259 // { > }
260 replaceRangeWithSameLowerBound(
261 Range.create(rangeToRemove.upperBound, rangeBelowUb.upperBound));
262 }
263 }
264
265 rangesByLowerBound.subMap(rangeToRemove.lowerBound, rangeToRemove.upperBound).clear();
266 }
267
268 private void replaceRangeWithSameLowerBound(Range<C> range) {
269 if (range.isEmpty()) {

Callers

nothing calls this directly

Calls 11

createMethod · 0.95
isEmptyMethod · 0.65
getValueMethod · 0.65
clearMethod · 0.65
checkNotNullMethod · 0.45
lowerEntryMethod · 0.45
compareToMethod · 0.45
hasUpperBoundMethod · 0.45
floorEntryMethod · 0.45
subMapMethod · 0.45

Tested by

no test coverage detected