/** * Create an empty immutable set * @param <T> the generic type * @return the empty set */ public static <T> Set<T> Set() { return Nil.set(); }
/** * Create an empty immutable set * @param <T> the generic type * @return the empty set */ public static <T> Set<T> Set() { return Nil.set(); }
/** * This method is deprecated. Please use {@link #Set()} instead */ @Deprecated public static <T> Set<T> set() { return Nil.set(); }
/** * This method is deprecated. Please use {@link #Set()} instead */ @Deprecated public static <T> Set<T> set() { return Nil.set(); }
static <T> C.Set<T> of(T[] data) { E.NPE(data); int len = data.length; if (len == 0) { return Nil.set(); } else if (len == 1) { return $.val(data[0]); } else { return new ImmutableSet<T>(C.listOf(data)); } }
static <T> C.Set<T> of(T[] data) { E.NPE(data); int len = data.length; if (len == 0) { return Nil.set(); } else if (len == 1) { return $.val(data[0]); } else { return new ImmutableSet<T>(C.listOf(data)); } }
@Override public <R> C.Traversable<R> map($.Function<? super T, ? extends R> mapper) { boolean immutable = isImmutable(); int sz = size(); if (immutable) { if (0 == sz) { return Nil.set(); } ListBuilder<R> lb = new ListBuilder<>(sz); forEach($.visitor($.f1(mapper).andThen(C.F.addTo(lb)))); return lb.toList(); } else { if (0 == sz) { return C.newSet(); } C.List<R> l = C.newSizedList(sz); forEach($.visitor($.f1(mapper).andThen(C.F.addTo(l)))); return l; } }
@Override public <R> C.Traversable<R> map($.Function<? super T, ? extends R> mapper) { boolean immutable = isImmutable(); int sz = size(); if (immutable) { if (0 == sz) { return Nil.set(); } ListBuilder<R> lb = new ListBuilder<>(sz); forEach($.visitor($.f1(mapper).andThen(C.F.addTo(lb)))); return lb.toList(); } else { if (0 == sz) { return C.newSet(); } C.List<R> l = C.newSizedList(sz); forEach($.visitor($.f1(mapper).andThen(C.F.addTo(l)))); return l; } }
@Override public C.Set<T> filter($.Function<? super T, Boolean> predicate) { boolean immutable = isImmutable(); int sz = size(); // TODO: handle lazy filter if (immutable) { if (0 == sz) { return Nil.set(); } ListBuilder<T> lb = new ListBuilder<T>(sz); forEach($.visitor($.predicate(predicate).ifThen(C.F.addTo(lb)))); return lb.toSet(); } else { if (0 == sz) { return C.newSet(); } C.Set<T> set = C.newSet(); forEach($.visitor($.predicate(predicate).ifThen(C.F.addTo(set)))); return set; } }
@Override public C.Set<T> filter($.Function<? super T, Boolean> predicate) { boolean immutable = isImmutable(); int sz = size(); // TODO: handle lazy filter if (immutable) { if (0 == sz) { return Nil.set(); } ListBuilder<T> lb = new ListBuilder<T>(sz); forEach($.visitor($.predicate(predicate).ifThen(C.F.addTo(lb)))); return lb.toSet(); } else { if (0 == sz) { return C.newSet(); } C.Set<T> set = C.newSet(); forEach($.visitor($.predicate(predicate).ifThen(C.F.addTo(set)))); return set; } }