From 008855fafbc6c63f64fdb113413d595c718bb179 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 19 May 2020 17:31:15 +0800 Subject: [PATCH] add methods --- CHANGELOG.md | 1 + .../cn/hutool/core/collection/IterUtil.java | 44 ++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d442f4958..a6d9cb00b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * 【core 】 Snowflake循环等待下一个时间时避免长时间循环,加入对时钟倒退的判断(pr#874@Github) * 【extra 】 新增 QRCode base64 编码形式返回(pr#878@Github) * 【core 】 ImgUtil增加toBase64DateUri,URLUtil增加getDataUri方法 +* 【core 】 IterUtil添加List转Map的工具方法(pr#123@Gitee) ### Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java index e7bf48690..53b15b249 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java @@ -467,6 +467,7 @@ public class IterUtil { * @param 键类型 * @param 值类型 * @return HashMap + * @since 5.3.6 */ public static Map> toListMap(Iterable iterable, Function keyMapper) { return toListMap(iterable, keyMapper, v -> v); @@ -482,10 +483,29 @@ public class IterUtil { * @param 键类型 * @param 值类型 * @return HashMap + * @since 5.3.6 */ public static Map> toListMap(Iterable iterable, Function keyMapper, Function valueMapper) { - final HashMap> resultMap = MapUtil.newHashMap(); + return toListMap(MapUtil.newHashMap(), iterable, keyMapper, valueMapper); + } + /** + * 将列表转成值为List的HashMap + * + * @param resultMap 结果Map,可自定义结果Map类型 + * @param iterable 值列表 + * @param keyMapper Map的键映射 + * @param valueMapper Map中List的值映射 + * @param 列表值类型 + * @param 键类型 + * @param 值类型 + * @return HashMap + * @since 5.3.6 + */ + public static Map> toListMap(Map> resultMap, Iterable iterable, Function keyMapper, Function valueMapper) { + if (null == resultMap) { + resultMap = MapUtil.newHashMap(); + } if (ObjectUtil.isNull(iterable)) { return resultMap; } @@ -505,6 +525,7 @@ public class IterUtil { * @param 键类型 * @param 值类型 * @return HashMap + * @since 5.3.6 */ public static Map toMap(Iterable iterable, Function keyMapper) { return toMap(iterable, keyMapper, v -> v); @@ -520,10 +541,29 @@ public class IterUtil { * @param 键类型 * @param 值类型 * @return HashMap + * @since 5.3.6 */ public static Map toMap(Iterable iterable, Function keyMapper, Function valueMapper) { - final HashMap resultMap = MapUtil.newHashMap(); + return toMap(MapUtil.newHashMap(), iterable, keyMapper, valueMapper); + } + /** + * 将列表转成Map + * + * @param resultMap 结果Map,通过传入map对象决定结果的Map类型 + * @param iterable 值列表 + * @param keyMapper Map的键映射 + * @param valueMapper Map的值映射 + * @param 列表值类型 + * @param 键类型 + * @param 值类型 + * @return HashMap + * @since 5.3.6 + */ + public static Map toMap(Map resultMap, Iterable iterable, Function keyMapper, Function valueMapper) { + if (null == resultMap) { + resultMap = MapUtil.newHashMap(); + } if (ObjectUtil.isNull(iterable)) { return resultMap; }