MCPcopy Create free account
hub / github.com/LFYSec/MScan / CombinedSetView

Class CombinedSetView

src/main/java/pascal/taie/util/collection/Views.java:292–344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

290 }
291
292 private static class CombinedSetView<T> extends AbstractSet<T> {
293
294 private final Set<? extends T> set1;
295
296 private final Set<? extends T> set2;
297
298 private CombinedSetView(Set<? extends T> set1, Set<? extends T> set2) {
299 this.set1 = set1;
300 this.set2 = set2;
301 }
302
303 @Override
304 public boolean contains(Object o) {
305 return set1.contains(o) || set2.contains(o);
306 }
307
308 @Override
309 @Nonnull
310 public Iterator<T> iterator() {
311 return new Iterator<>() {
312
313 private final Iterator<? extends T> it1 = set1.iterator();
314
315 private final Iterator<? extends T> it2 = set2.iterator();
316
317 @Override
318 public boolean hasNext() {
319 return it1.hasNext() || it2.hasNext();
320 }
321
322 @Override
323 public T next() {
324 if (it1.hasNext()) {
325 return it1.next();
326 } else if (it2.hasNext()) {
327 return it2.next();
328 } else {
329 throw new NoSuchElementException();
330 }
331 }
332 };
333 }
334
335 @Override
336 public boolean isEmpty() {
337 return set1.isEmpty() && set2.isEmpty();
338 }
339
340 @Override
341 public int size() {
342 return set1.size() + set2.size();
343 }
344 }
345}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected