From e847458186dc0f621943e7d99ef8a778353ff776 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Tue, 18 Jul 2023 11:33:00 +0800 Subject: [PATCH] Add more util methods --- .../com/schbrain/common/util/StreamUtils.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) 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 c8f59ac..a7f7b4e 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)); -- GitLab