@Override public java.util.TreeSet<T> toJavaSet() { return toJavaSet(ignore -> new java.util.TreeSet<>(comparator())); }
@SuppressWarnings("unchecked") public static <T> TreeSet<T> ofAll(Comparator<? super T> comparator, Iterable<? extends T> values) { Objects.requireNonNull(comparator, "comparator is null"); Objects.requireNonNull(values, "values is null"); if (values instanceof TreeSet && ((TreeSet<?>) values).comparator() == comparator) { return (TreeSet<T>) values; } else { return values.iterator().hasNext() ? new TreeSet<>(RedBlackTree.ofAll(comparator, values)) : empty(comparator); } }
@Override public TreeSet<T> scan(T zero, BiFunction<? super T, ? super T, ? extends T> operation) { return Collections.scanLeft(this, zero, operation, iter -> TreeSet.ofAll(comparator(), iter)); }
@Override public <C> Map<C, TreeSet<T>> groupBy(Function<? super T, ? extends C> classifier) { return Collections.groupBy(this, classifier, elements -> ofAll(comparator(), elements)); }
@Override public java.util.TreeSet<T> toJavaSet() { return toJavaSet(ignore -> new java.util.TreeSet<>(comparator())); }
@SuppressWarnings("unchecked") public static <T> TreeSet<T> ofAll(Comparator<? super T> comparator, Iterable<? extends T> values) { Objects.requireNonNull(comparator, "comparator is null"); Objects.requireNonNull(values, "values is null"); if (values instanceof TreeSet && ((TreeSet<?>) values).comparator() == comparator) { return (TreeSet<T>) values; } else { return values.iterator().hasNext() ? new TreeSet<>(RedBlackTree.ofAll(comparator, values)) : empty(comparator); } }
@Override public TreeSet<T> scan(T zero, BiFunction<? super T, ? super T, ? extends T> operation) { return Collections.scanLeft(this, zero, operation, iter -> TreeSet.ofAll(comparator(), iter)); }
@Override public <C> Map<C, TreeSet<T>> groupBy(Function<? super T, ? extends C> classifier) { return Collections.groupBy(this, classifier, elements -> ofAll(comparator(), elements)); }