/** * Returns this {@code BitSet} if it is nonempty, * otherwise {@code BitSet} created from result of evaluating supplier, using existing bitset properties. * * @param supplier An alternative {@code Traversable} * @return this {@code BitSet} if it is nonempty, * otherwise {@code BitSet} created from result of evaluating supplier, using existing bitset properties. */ @Override public BitSet<T> orElse(Supplier<? extends Iterable<? extends T>> supplier) { return isEmpty() ? createFromAll(supplier.get()) : this; }
@Override public <U> BitSet<T> distinctBy(Function<? super T, ? extends U> keyExtractor) { Objects.requireNonNull(keyExtractor, "keyExtractor is null"); return isEmpty() ? this : createFromAll(iterator().distinctBy(keyExtractor)); }
@Override public BitSet<T> distinctBy(Comparator<? super T> comparator) { Objects.requireNonNull(comparator, "comparator is null"); return isEmpty() ? this : createFromAll(iterator().distinctBy(comparator)); }
@Override public BitSet<T> takeRight(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().takeRight(n)); } }
@Override public BitSet<T> take(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().take(n)); } }
@Override public BitSet<T> takeWhile(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> result = createFromAll(iterator().takeWhile(predicate)); return (result.length() == length()) ? this : result; }
@Override public BitSet<T> reject(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> bitSet = createFromAll(iterator().reject(predicate)); return (bitSet.length() == length()) ? this : bitSet; }
@Override public BitSet<T> filter(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> bitSet = createFromAll(iterator().filter(predicate)); return (bitSet.length() == length()) ? this : bitSet; }
@Override public BitSet<T> dropRight(int n) { if (n <= 0 || isEmpty()) { return this; } else if (n >= length()) { return createEmpty(); } else { return createFromAll(iterator().dropRight(n)); } }
@Override public BitSet<T> drop(int n) { if (n <= 0 || isEmpty()) { return this; } else if (n >= length()) { return createEmpty(); } else { return createFromAll(iterator().drop(n)); } }
@Override public BitSet<T> intersect(Set<? extends T> elements) { Objects.requireNonNull(elements, "elements is null"); if (isEmpty()) { return this; } else if (elements.isEmpty()) { return createEmpty(); } else { final int size = size(); if (size <= elements.size()) { return retainAll(elements); } else { final BitSet<T> results = createFromAll(elements).retainAll(this); return (size == results.size()) ? this : results; } } }
@Override public BitSet<T> takeRight(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().takeRight(n)); } }
@Override public BitSet<T> take(int n) { if (isEmpty() || n >= length()) { return this; } else if (n <= 0) { return createEmpty(); } else { return createFromAll(iterator().take(n)); } }
@Override public BitSet<T> reject(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> bitSet = createFromAll(iterator().reject(predicate)); return (bitSet.length() == length()) ? this : bitSet; }
@Override public BitSet<T> drop(int n) { if (n <= 0 || isEmpty()) { return this; } else if (n >= length()) { return createEmpty(); } else { return createFromAll(iterator().drop(n)); } }
/** * Returns this {@code BitSet} if it is nonempty, * otherwise {@code BitSet} created from iterable, using existing bitset properties. * * @param other An alternative {@code Traversable} * @return this {@code BitSet} if it is nonempty, * otherwise {@code BitSet} created from iterable, using existing bitset properties. */ @Override public BitSet<T> orElse(Iterable<? extends T> other) { return isEmpty() ? createFromAll(other) : this; }
@Override public BitSet<T> dropRight(int n) { if (n <= 0 || isEmpty()) { return this; } else if (n >= length()) { return createEmpty(); } else { return createFromAll(iterator().dropRight(n)); } }
@Override public BitSet<T> takeWhile(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> result = createFromAll(iterator().takeWhile(predicate)); return (result.length() == length()) ? this : result; }
@Override public BitSet<T> filter(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> bitSet = createFromAll(iterator().filter(predicate)); return (bitSet.length() == length()) ? this : bitSet; }
@Override public BitSet<T> dropWhile(Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); final BitSet<T> bitSet = createFromAll(iterator().dropWhile(predicate)); return (bitSet.length() == length()) ? this : bitSet; }