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())); } /**