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 ab3ef7e9e..f4ef337eb 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 @@ -1,6 +1,7 @@ package cn.hutool.core.collection; +import cn.hutool.core.lang.Opt; import cn.hutool.core.map.MapUtil; import cn.hutool.core.stream.StreamUtil; @@ -48,7 +49,7 @@ public class CollStreamUtil { return Collections.emptyMap(); } return StreamUtil.of(collection, isParallel) - .collect(Collectors.toMap(key, Function.identity(), (l, r) -> l)); + .collect(HashMap::new, (HashMap m, V v) -> m.put(Opt.ofNullable(v).map(key).get(), v), HashMap::putAll); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollStreamUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollStreamUtilTest.java index f783adce4..d5c7df566 100644 --- a/hutool-core/src/test/java/cn/hutool/core/collection/CollStreamUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollStreamUtilTest.java @@ -28,6 +28,11 @@ public class CollStreamUtilTest { Assert.assertEquals(map.get(2L).getName(), "李四"); Assert.assertEquals(map.get(3L).getName(), "王五"); Assert.assertNull(map.get(4L)); + + // 测试value为空时 + list.add(null); + map = CollStreamUtil.toIdentityMap(list, Student::getStudentId); + Assert.assertNull(map.get(4L)); } @Test