From a2331bf5c9684682060a19cf99081dcb8c42de33 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Mon, 6 Dec 2021 21:01:14 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BA=86CollStreamUtil.t?= =?UTF-8?q?oMap=E4=B8=AD=EF=BC=8C=E5=A6=82=E6=9E=9Cvalue=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=8F=91=E7=94=9FNPE=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/core/collection/CollStreamUtil.java | 2 +- .../hutool/core/collection/CollStreamUtilTest.java | 13 ++++++------- 2 files changed, 7 insertions(+), 8 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 693be7936..ab3ef7e9e 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 @@ -81,7 +81,7 @@ public class CollStreamUtil { if (CollUtil.isEmpty(collection)) { return Collections.emptyMap(); } - return StreamUtil.of(collection, isParallel).collect(Collectors.toMap(key, value, (l, r) -> l)); + return StreamUtil.of(collection, isParallel).collect(HashMap::new, (HashMap m, E v) -> m.put(key.apply(v), value.apply(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 8f7d165df..f783adce4 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 @@ -6,13 +6,7 @@ import lombok.ToString; import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * CollectionStream测试方法 @@ -51,6 +45,11 @@ public class CollStreamUtilTest { Assert.assertEquals(map.get(2L), "李四"); Assert.assertEquals(map.get(3L), "王五"); Assert.assertNull(map.get(4L)); + + // 测试value为空时 + list.add(new Student(1, 1, 4, null)); + map = CollStreamUtil.toMap(list, Student::getStudentId, Student::getName); + Assert.assertNull(map.get(4L)); } @Test From 1b28ba13e489a28aeba47607ca9e7b9319c953c4 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Mon, 6 Dec 2021 21:13:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BA=86CollStreamUtil.t?= =?UTF-8?q?oIdentityMap=E4=B8=AD=EF=BC=8C=E5=A6=82=E6=9E=9Cvalue=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=EF=BC=8C=E5=8F=91=E7=94=9FNPE=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/core/collection/CollStreamUtil.java | 3 ++- .../java/cn/hutool/core/collection/CollStreamUtilTest.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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