From dc0d9591c9f9f106823000ea8bcad6f7a416d6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 5 Jul 2022 10:55:25 +0000 Subject: [PATCH 1/2] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E6=93=8D=E7=BA=B5=E7=B1=BB=E5=9E=8B=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=90=8E=E7=BB=AD=E6=93=8D=E7=BA=B5=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20add=20=E6=96=B0=E5=A2=9E=20filter=20sorted?= =?UTF-8?q?=20joining=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/collection/CollStreamUtil.java | 82 +++++++++++++++---- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java index b70f24a62..83c500563 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java @@ -22,7 +22,7 @@ import java.util.stream.Collectors; /** * 集合的stream操作封装 * - * @author 528910437@QQ.COM, VampireAchao<achao1441470436@gmail.com> + * @author 528910437@QQ.COM, VampireAchao<achao1441470436@gmail.com>Lion Li> * @since 5.5.2 */ public class CollStreamUtil { @@ -55,7 +55,7 @@ public class CollStreamUtil { */ public static Map toIdentityMap(Collection collection, Function key, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return toMap(collection, (v) -> Opt.ofNullable(v).map(key).get(), Function.identity(), isParallel); } @@ -88,7 +88,7 @@ public class CollStreamUtil { */ public static Map toMap(Collection collection, Function key, Function value, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return StreamUtil.of(collection, isParallel) .collect(HashMap::new, (m, v) -> m.put(key.apply(v), value.apply(v)), HashMap::putAll); @@ -122,7 +122,7 @@ public class CollStreamUtil { */ public static Map> groupByKey(Collection collection, Function key, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return groupBy(collection, key, Collectors.toList(), isParallel); } @@ -160,7 +160,7 @@ public class CollStreamUtil { public static Map>> groupBy2Key(Collection collection, Function key1, Function key2, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return groupBy(collection, key1, CollectorUtil.groupingBy(key2, Collectors.toList()), isParallel); } @@ -197,7 +197,7 @@ public class CollStreamUtil { public static Map> group2Map(Collection collection, Function key1, Function key2, boolean isParallel) { if (CollUtil.isEmpty(collection) || key1 == null || key2 == null) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return groupBy(collection, key1, CollectorUtil.toMap(key2, Function.identity(), (l, r) -> l), isParallel); } @@ -235,7 +235,7 @@ public class CollStreamUtil { public static Map> groupKeyValue(Collection collection, Function key, Function value, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return groupBy(collection, key, Collectors.mapping(v -> Opt.ofNullable(v).map(value).orElse(null), Collectors.toList()), isParallel); } @@ -254,7 +254,7 @@ public class CollStreamUtil { */ public static Map groupBy(Collection collection, Function key, Collector downstream) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return groupBy(collection, key, downstream, false); } @@ -275,7 +275,7 @@ public class CollStreamUtil { */ public static Map groupBy(Collection collection, Function key, Collector downstream, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } return StreamUtil.of(collection, isParallel).collect(CollectorUtil.groupingBy(key, downstream)); } @@ -307,7 +307,7 @@ public class CollStreamUtil { */ public static List toList(Collection collection, Function function, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptyList(); + return CollUtil.newArrayList(); } return StreamUtil.of(collection, isParallel) .map(function) @@ -342,7 +342,7 @@ public class CollStreamUtil { */ public static Set toSet(Collection collection, Function function, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return Collections.emptySet(); + return CollUtil.newHashSet(); } return StreamUtil.of(collection, isParallel) .map(function) @@ -365,11 +365,11 @@ public class CollStreamUtil { */ public static Map merge(Map map1, Map map2, BiFunction merge) { if (MapUtil.isEmpty(map1) && MapUtil.isEmpty(map2)) { - return Collections.emptyMap(); + return MapUtil.newHashMap(); } else if (MapUtil.isEmpty(map1)) { - map1 = Collections.emptyMap(); + map1 = MapUtil.newHashMap(); } else if (MapUtil.isEmpty(map2)) { - map2 = Collections.emptyMap(); + map2 = MapUtil.newHashMap(); } Set key = new HashSet<>(); key.addAll(map1.keySet()); @@ -385,4 +385,58 @@ public class CollStreamUtil { } return map; } + + /** + * 将collection过滤 + * + * @param collection 需要转化的集合 + * @param function 过滤方法 + * @return 过滤后的list + */ + public static List filter(Collection collection, Predicate function) { + if (CollUtil.isEmpty(collection)) { + return CollUtil.newArrayList(); + } + return collection.stream().filter(function).collect(Collectors.toList()); + } + + /** + * 将collection拼接 + * + * @param collection 需要转化的集合 + * @param function 拼接方法 + * @return 拼接后的list + */ + public static String join(Collection collection, Function function) { + return join(collection, function, ","); + } + + /** + * 将collection拼接 + * + * @param collection 需要转化的集合 + * @param function 拼接方法 + * @param delimiter 拼接符 + * @return 拼接后的list + */ + public static String join(Collection collection, Function function, CharSequence delimiter) { + if (CollUtil.isEmpty(collection)) { + return StrUtil.EMPTY; + } + return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter)); + } + + /** + * 将collection排序 + * + * @param collection 需要转化的集合 + * @param comparing 排序方法 + * @return 排序后的list + */ + public static List sorted(Collection collection, Comparator comparing) { + if (CollUtil.isEmpty(collection)) { + return CollUtil.newArrayList(); + } + return collection.stream().sorted(comparing).collect(Collectors.toList()); + } } From bdf538a932944b44c456660f03b45514dc8dbbbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 5 Jul 2022 14:41:11 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E9=92=88=E5=AF=B9=E5=AE=A1=E6=9F=A5?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/collection/CollStreamUtil.java | 75 +++---------------- 1 file changed, 11 insertions(+), 64 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java index 83c500563..989ae6c6b 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollStreamUtil.java @@ -55,7 +55,7 @@ public class CollStreamUtil { */ public static Map toIdentityMap(Collection collection, Function key, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return toMap(collection, (v) -> Opt.ofNullable(v).map(key).get(), Function.identity(), isParallel); } @@ -88,7 +88,7 @@ public class CollStreamUtil { */ public static Map toMap(Collection collection, Function key, Function value, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return StreamUtil.of(collection, isParallel) .collect(HashMap::new, (m, v) -> m.put(key.apply(v), value.apply(v)), HashMap::putAll); @@ -122,7 +122,7 @@ public class CollStreamUtil { */ public static Map> groupByKey(Collection collection, Function key, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return groupBy(collection, key, Collectors.toList(), isParallel); } @@ -160,7 +160,7 @@ public class CollStreamUtil { public static Map>> groupBy2Key(Collection collection, Function key1, Function key2, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return groupBy(collection, key1, CollectorUtil.groupingBy(key2, Collectors.toList()), isParallel); } @@ -197,7 +197,7 @@ public class CollStreamUtil { public static Map> group2Map(Collection collection, Function key1, Function key2, boolean isParallel) { if (CollUtil.isEmpty(collection) || key1 == null || key2 == null) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return groupBy(collection, key1, CollectorUtil.toMap(key2, Function.identity(), (l, r) -> l), isParallel); } @@ -235,7 +235,7 @@ public class CollStreamUtil { public static Map> groupKeyValue(Collection collection, Function key, Function value, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return groupBy(collection, key, Collectors.mapping(v -> Opt.ofNullable(v).map(value).orElse(null), Collectors.toList()), isParallel); } @@ -254,7 +254,7 @@ public class CollStreamUtil { */ public static Map groupBy(Collection collection, Function key, Collector downstream) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return groupBy(collection, key, downstream, false); } @@ -275,7 +275,7 @@ public class CollStreamUtil { */ public static Map groupBy(Collection collection, Function key, Collector downstream, boolean isParallel) { if (CollUtil.isEmpty(collection)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } return StreamUtil.of(collection, isParallel).collect(CollectorUtil.groupingBy(key, downstream)); } @@ -365,11 +365,11 @@ public class CollStreamUtil { */ public static Map merge(Map map1, Map map2, BiFunction merge) { if (MapUtil.isEmpty(map1) && MapUtil.isEmpty(map2)) { - return MapUtil.newHashMap(); + return MapUtil.newHashMap(0); } else if (MapUtil.isEmpty(map1)) { - map1 = MapUtil.newHashMap(); + map1 = MapUtil.newHashMap(0); } else if (MapUtil.isEmpty(map2)) { - map2 = MapUtil.newHashMap(); + map2 = MapUtil.newHashMap(0); } Set key = new HashSet<>(); key.addAll(map1.keySet()); @@ -386,57 +386,4 @@ public class CollStreamUtil { return map; } - /** - * 将collection过滤 - * - * @param collection 需要转化的集合 - * @param function 过滤方法 - * @return 过滤后的list - */ - public static List filter(Collection collection, Predicate function) { - if (CollUtil.isEmpty(collection)) { - return CollUtil.newArrayList(); - } - return collection.stream().filter(function).collect(Collectors.toList()); - } - - /** - * 将collection拼接 - * - * @param collection 需要转化的集合 - * @param function 拼接方法 - * @return 拼接后的list - */ - public static String join(Collection collection, Function function) { - return join(collection, function, ","); - } - - /** - * 将collection拼接 - * - * @param collection 需要转化的集合 - * @param function 拼接方法 - * @param delimiter 拼接符 - * @return 拼接后的list - */ - public static String join(Collection collection, Function function, CharSequence delimiter) { - if (CollUtil.isEmpty(collection)) { - return StrUtil.EMPTY; - } - return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter)); - } - - /** - * 将collection排序 - * - * @param collection 需要转化的集合 - * @param comparing 排序方法 - * @return 排序后的list - */ - public static List sorted(Collection collection, Comparator comparing) { - if (CollUtil.isEmpty(collection)) { - return CollUtil.newArrayList(); - } - return collection.stream().sorted(comparing).collect(Collectors.toList()); - } }