@Override default int length() { return foldLeft(0, (n, ignored) -> n + 1); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Multimap<K, V>> M ofStream(M source, java.util.stream.Stream<? extends T> stream, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return Stream.ofAll(stream).foldLeft(source, (m, el) -> (M) m.put(keyMapper.apply(el), valueMapper.apply(el))); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Map<K, V>> M ofStream(M map, java.util.stream.Stream<? extends T> stream, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return Stream.ofAll(stream).foldLeft(map, (m, el) -> (M) m.put(keyMapper.apply(el), valueMapper.apply(el))); }
@SuppressWarnings("unchecked") static <K, V, M extends Multimap<K, V>> M ofJavaMap(M source, java.util.Map<? extends K, ? extends V> map) { Objects.requireNonNull(map, "map is null"); return Stream.ofAll(map.entrySet()).foldLeft(source, (m, el) -> (M) m.put(el.getKey(), el.getValue())); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Map<K, V>> M ofStream(M map, java.util.stream.Stream<? extends T> stream, Function<? super T, Tuple2<? extends K, ? extends V>> entryMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(entryMapper, "entryMapper is null"); return Stream.ofAll(stream).foldLeft(map, (m, el) -> (M) m.put(entryMapper.apply(el))); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Multimap<K, V>> M ofStream(M source, java.util.stream.Stream<? extends T> stream, Function<? super T, Tuple2<? extends K, ? extends V>> entryMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(entryMapper, "entryMapper is null"); return Stream.ofAll(stream).foldLeft(source, (m, el) -> (M) m.put(entryMapper.apply(el))); } }
@Override default Stream<T> reverse() { return isEmpty() ? this : foldLeft(Stream.empty(), Stream::prepend); }
@Override default Stream<Stream<T>> permutations() { if (isEmpty()) { return Empty.instance(); } else { final Stream<T> tail = tail(); if (tail.isEmpty()) { return Stream.of(this); } else { final Stream<Stream<T>> zero = Empty.instance(); return distinct().foldLeft(zero, (xs, x) -> { final Function<Stream<T>, Stream<T>> prepend = l -> l.prepend(x); return xs.appendAll(remove(x).permutations().map(prepend)); }); } } }
@Override default int length() { return foldLeft(0, (n, ignored) -> n + 1); }
public Builder addAll(Iterable<Boolean> values) { return Stream.ofAll(values).foldLeft(this, Builder::add); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Map<K, V>> M ofStream(M map, java.util.stream.Stream<? extends T> stream, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return Stream.ofAll(stream).foldLeft(map, (m, el) -> (M) m.put(keyMapper.apply(el), valueMapper.apply(el))); }
public Builder addAll(Iterable<String> values) { return Stream.ofAll(values).foldLeft(this, Builder::add); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Multimap<K, V>> M ofStream(M source, java.util.stream.Stream<? extends T> stream, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends V> valueMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(keyMapper, "keyMapper is null"); Objects.requireNonNull(valueMapper, "valueMapper is null"); return Stream.ofAll(stream).foldLeft(source, (m, el) -> (M) m.put(keyMapper.apply(el), valueMapper.apply(el))); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Map<K, V>> M ofStream(M map, java.util.stream.Stream<? extends T> stream, Function<? super T, Tuple2<? extends K, ? extends V>> entryMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(entryMapper, "entryMapper is null"); return Stream.ofAll(stream).foldLeft(map, (m, el) -> (M) m.put(entryMapper.apply(el))); }
@SuppressWarnings("unchecked") static <K, V, M extends Multimap<K, V>> M ofJavaMap(M source, java.util.Map<? extends K, ? extends V> map) { Objects.requireNonNull(map, "map is null"); return Stream.ofAll(map.entrySet()).foldLeft(source, (m, el) -> (M) m.put(el.getKey(), el.getValue())); }
@SuppressWarnings("unchecked") static <T, K, V, M extends Multimap<K, V>> M ofStream(M source, java.util.stream.Stream<? extends T> stream, Function<? super T, Tuple2<? extends K, ? extends V>> entryMapper) { Objects.requireNonNull(stream, "stream is null"); Objects.requireNonNull(entryMapper, "entryMapper is null"); return Stream.ofAll(stream).foldLeft(source, (m, el) -> (M) m.put(entryMapper.apply(el))); } }
@Override default Stream<T> reverse() { return isEmpty() ? this : foldLeft(Stream.empty(), Stream::prepend); }
static int vavrStream() { return io.vavr.collection.Stream.range(0, COUNT) .flatMap(i -> io.vavr.collection.Stream.range(i, i + BIND)) .filter(i -> i >= FILTER) .map(i -> i + 1) .foldLeft(0, (i, a) -> i + a); }
BinaryString stripHammingMetadata(EncodedString input) { String raw = Stream.from(0, 1).take(input.getValue().length()) .map(i -> Tuple.of(i + 1, Character.toString(input.getValue().charAt(i)))) .filter(t -> !HammingHelper.isPowerOfTwo(t._1)) .map(i -> i._2) .foldLeft("", String::concat); return BinaryString.of(raw); } }
@Test public void immutable() { Vector<Integer> vector = Stream.range(0, COUNT).foldLeft(Vector.empty(), Vector::append); assertEquals(COUNT, vector.length()); ResultWrapper<Vector<Integer>> resultWrapper = new ResultWrapper<>(vector); keepProfilerAlive(resultWrapper); }