From 056eb5ded6802ce3ffd33c838dcd4a278c1682f6 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Tue, 6 Sep 2022 11:18:06 +0800 Subject: [PATCH] =?UTF-8?q?CollectorUtil=20=E6=96=B0=E5=A2=9E=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E5=AF=B9toMap=E7=9A=84=E9=87=8D=E8=BD=BD=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=B0=86EasyStream=E4=B8=ADjoin=E9=87=87=E7=94=A8Coll?= =?UTF-8?q?ectorUtil=E4=B8=AD=E7=9A=84joining?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/core/stream/CollectorUtil.java | 32 +++++++++++++++++-- .../cn/hutool/core/stream/EasyStream.java | 2 +- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/CollectorUtil.java b/hutool-core/src/main/java/cn/hutool/core/stream/CollectorUtil.java index b11d08d2f..5bceb52df 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/CollectorUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/CollectorUtil.java @@ -148,6 +148,34 @@ public class CollectorUtil { return groupingBy(classifier, Collectors.toList()); } + + /** + * 对null友好的 toMap 操作的 {@link Collector}实现,默认使用HashMap + * + * @param keyMapper 指定map中的key + * @param valueMapper 指定map中的value + * @param 实体类型 + * @param map中key的类型 + * @param map中value的类型 + * @return 对null友好的 toMap 操作的 {@link Collector}实现 + */ + public static Collector> toMap(final Function keyMapper, + final Function valueMapper) { + return toMap(keyMapper, valueMapper, (l, r) -> r); + } + + /** + * 对null友好的 toMap 操作的 {@link Collector}实现,默认使用HashMap + * + * @param keyMapper 指定map中的key + * @param 实体类型 + * @param map中key的类型 + * @return 对null友好的 toMap 操作的 {@link Collector}实现 + */ + public static Collector> toMap(final Function keyMapper) { + return toMap(keyMapper, Function.identity()); + } + /** * 对null友好的 toMap 操作的 {@link Collector}实现,默认使用HashMap * @@ -160,8 +188,8 @@ public class CollectorUtil { * @return 对null友好的 toMap 操作的 {@link Collector}实现 */ public static Collector> toMap(final Function keyMapper, - final Function valueMapper, - final BinaryOperator mergeFunction) { + final Function valueMapper, + final BinaryOperator mergeFunction) { return toMap(keyMapper, valueMapper, mergeFunction, HashMap::new); } diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java index 8e2319b2d..e32d06d69 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java @@ -778,7 +778,7 @@ public class EasyStream extends StreamWrapper> implements St public String join(final CharSequence delimiter, final CharSequence prefix, final CharSequence suffix) { - return map(String::valueOf).collect(Collectors.joining(delimiter, prefix, suffix)); + return map(String::valueOf).collect(CollectorUtil.joining(delimiter, prefix, suffix, Function.identity())); } /**