@Override public <U> LinkedHashSet<U> flatMap(Function<? super T, ? extends Iterable<? extends U>> mapper) { Objects.requireNonNull(mapper, "mapper is null"); if (isEmpty()) { return empty(); } else { final LinkedHashMap<U, Object> that = foldLeft(LinkedHashMap.empty(), (tree, t) -> addAll(tree, mapper.apply(t))); return new LinkedHashSet<>(that); } }
@Override public <U> LinkedHashSet<U> map(Function<? super T, ? extends U> mapper) { Objects.requireNonNull(mapper, "mapper is null"); if (isEmpty()) { return empty(); } else { final LinkedHashMap<U, Object> that = foldLeft(LinkedHashMap.empty(), (tree, t) -> { final U u = mapper.apply(t); return tree.put(u, u); }); return new LinkedHashSet<>(that); } }
@Override public <U> LinkedHashSet<U> flatMap(Function<? super T, ? extends Iterable<? extends U>> mapper) { Objects.requireNonNull(mapper, "mapper is null"); if (isEmpty()) { return empty(); } else { final LinkedHashMap<U, Object> that = foldLeft(LinkedHashMap.empty(), (tree, t) -> addAll(tree, mapper.apply(t))); return new LinkedHashSet<>(that); } }
@Override public <U> LinkedHashSet<U> map(Function<? super T, ? extends U> mapper) { Objects.requireNonNull(mapper, "mapper is null"); if (isEmpty()) { return empty(); } else { final LinkedHashMap<U, Object> that = foldLeft(LinkedHashMap.empty(), (tree, t) -> { final U u = mapper.apply(t); return tree.put(u, u); }); return new LinkedHashSet<>(that); } }