From ba32ec43051d4ff292a8e2b823210e28de5658d4 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 21 Jul 2023 18:25:05 +0800 Subject: [PATCH] add flat --- .../dromara/hutool/core/collection/CollUtil.java | 14 ++++++++------ .../core/stream/TransformableWrappedStream.java | 1 + .../hutool/core/collection/CollUtilTest.java | 16 +++++++++------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java index a189b8889..ce68556cb 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java @@ -2359,10 +2359,11 @@ public class CollUtil { * 解构多层集合 * 例如:{@code List>> 解构成 List} * + * @param 元素类型 * @param collection 需要解构的集合 * @return 解构后的集合 */ - public static List flat(Collection collection) { + public static List flat(final Collection collection) { return flat(collection, true); } @@ -2372,18 +2373,19 @@ public class CollUtil { *

* skipNull如果为true, 则解构后的集合里不包含null值,为false则会包含null值。 * + * @param 元素类型 * @param collection 需要结构的集合 * @param skipNull 是否跳过空的值 * @return 解构后的集合 */ @SuppressWarnings({"unchecked"}) - public static List flat(Collection collection, boolean skipNull) { - LinkedList queue = new LinkedList<>(collection); + public static List flat(final Collection collection, final boolean skipNull) { + final LinkedList queue = new LinkedList<>(collection); - List result = new ArrayList<>(); + final List result = new ArrayList<>(); - while (!queue.isEmpty()) { - Object t = queue.removeFirst(); + while (isNotEmpty(queue)) { + final Object t = queue.removeFirst(); if (skipNull && t == null) { continue; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java index 718472d1c..3dd3656dc 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java @@ -493,6 +493,7 @@ public interface TransformableWrappedStream 函数执行后返回的List里面的类型 * @return EasyStream 一个流 + * @since 6.0.0 */ default EasyStream flat() { return EasyStream.of(CollUtil.flat(nonNull().collect(Collectors.toList()))); diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/collection/CollUtilTest.java index 91ee1ff88..d964791dc 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/collection/CollUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/collection/CollUtilTest.java @@ -8,7 +8,6 @@ import org.dromara.hutool.core.date.DateUtil; import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.map.Dict; import org.dromara.hutool.core.map.MapUtil; -import org.dromara.hutool.core.stream.EasyStream; import org.dromara.hutool.core.text.StrUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -1206,19 +1205,21 @@ public class CollUtilTest { } + @SuppressWarnings("ArraysAsListWithZeroOrOneArgument") @Test public void flatListTest1() { - List>> list = Arrays.asList(Arrays.asList(Arrays.asList("1", "2", "3"), Arrays.asList("5", "6", "7"))); + final List>> list = Arrays.asList(Arrays.asList(Arrays.asList("1", "2", "3"), Arrays.asList("5", "6", "7"))); - List objects = CollUtil.flat(list); + final List objects = CollUtil.flat(list); Assertions.assertArrayEquals(new String[]{"1", "2", "3", "5", "6", "7"}, objects.toArray()); } + @SuppressWarnings("ArraysAsListWithZeroOrOneArgument") @Test public void flatListTest2() { - List>> list = Arrays.asList( + final List>> list = Arrays.asList( Arrays.asList( Arrays.asList("a"), Arrays.asList("b", "c"), @@ -1229,15 +1230,16 @@ public class CollUtilTest { Arrays.asList("j", "k", "l") ) ); - List flat = CollUtil.flat(list); + final List flat = CollUtil.flat(list); Assertions.assertArrayEquals(new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"}, flat.toArray()); } + @SuppressWarnings("ArraysAsListWithZeroOrOneArgument") @Test void flatListTest3() { - List>> list = Arrays.asList( + final List>> list = Arrays.asList( Arrays.asList( Arrays.asList("a"), Arrays.asList("b", "c", null), @@ -1248,7 +1250,7 @@ public class CollUtilTest { Arrays.asList("j", "k", "l") ) ); - List flat = CollUtil.flat(list, false); + final List flat = CollUtil.flat(list, false); Assertions.assertArrayEquals(new String[]{"a", "b", "c", null, "d", "e", "f", "g", "h", "i", "j", "k", "l"}, flat.toArray()); }