diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java index c8f59acb472a58feb5e8fc1b07ed0ea1c9e1ece3..a7f7b4e3a940bb20d1d3f9b9717986eb7c99ef85 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java @@ -26,15 +26,23 @@ import static java.util.stream.Collectors.mapping; public class StreamUtils { public static List filterToList(Iterable data, Predicate predicate) { - return filter(data, predicate, Collectors.toList()); + return filterToList(data, predicate, Function.identity()); + } + + public static List filterToList(Iterable data, Predicate predicate, Function mapper) { + return filter(data, predicate, mapper, Collectors.toList()); } public static Set filterToSet(Iterable data, Predicate predicate) { - return filter(data, predicate, Collectors.toSet()); + return filterToSet(data, predicate, Function.identity()); + } + + public static Set filterToSet(Iterable data, Predicate predicate, Function mapper) { + return filter(data, predicate, mapper, Collectors.toSet()); } - public static > C filter(Iterable data, Predicate predicate, Collector collector) { - return from(data).filter(predicate).collect(collector); + public static > V filter(Iterable data, Predicate predicate, Function mapper, Collector collector) { + return from(data).filter(predicate).map(mapper).collect(collector); } public static List toList(Iterable data, Function mapper) { @@ -76,11 +84,11 @@ public class StreamUtils { return stream.collect(collector); } - public static Map toMap(Iterable data, Function keyMapper) { + public static Map toMap(Iterable data, Function keyMapper) { return toMap(data, keyMapper, false); } - public static Map toMap(Iterable data, Function keyMapper, boolean ordered) { + public static Map toMap(Iterable data, Function keyMapper, boolean ordered) { return toMap(data, keyMapper, Function.identity(), ordered); } @@ -100,7 +108,7 @@ public class StreamUtils { return from(data).collect(Collectors.toMap(keyMapper, valueMapper, (oldValue, newValue) -> oldValue, mapFactory)); } - public static Map> groupBy(Iterable data, Function mapper) { + public static Map> groupBy(Iterable data, Function mapper) { return groupBy(data, mapper, false); } @@ -128,11 +136,11 @@ public class StreamUtils { return groupBy(data, keyMapper, valueMapper, collector, false); } - public static Map groupBy(Iterable data, Function keyMapper, Function valueMapper, Collector collector, boolean discardNullKey) { + public static Map groupBy(Iterable data, Function keyMapper, Function valueMapper, Collector collector, boolean discardNullKey) { return groupBy(data, keyMapper, valueMapper, collector, discardNullKey, HashMap::new); } - public static Map groupBy(Iterable data, Function keyMapper, Function valueMapper, Collector collector, boolean discardNullKey, Supplier> mapSupplier) { + public static Map groupBy(Iterable data, Function keyMapper, Function valueMapper, Collector collector, boolean discardNullKey, Supplier> mapSupplier) { Stream stream = from(data); if (discardNullKey) { stream = stream.filter(item -> null != keyMapper.apply(item));