package extensions.java.util.stream.Stream; import manifold.ext.rt.api.Extension; import manifold.ext.rt.api.This; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @Extension public abstract class StreamExt { public static Set toSet(@This Stream thiz) { return thiz.collect(LinkedHashSet::new, Set::add, Set::addAll); } public static Map toMap(@This Stream thiz, Function keyMapper, Function valueMapper) { return thiz.collect(Collectors.toMap(keyMapper, valueMapper)); } public static Map toMap(@This Stream thiz, Function keyMapper) { return thiz.toMap(keyMapper, Function.identity()); } public static Map> groupingBy(@This Stream thiz, Function valueMapper) { return thiz.collect(Collectors.groupingBy(valueMapper)); } public static String join(@This Stream thiz) { return thiz.collect(Collectors.joining()); } public static String join(@This Stream thiz, String delimiter) { return thiz.collect(Collectors.joining(delimiter)); } public static String join(@This Stream thiz, char delimiter) { return thiz.join("" + delimiter); } public static Stream concat(@This Stream thiz, Stream other) { return Stream.concat(thiz, other); } }