From 632d4de950cf18eaca78b7565e396111f506f5ee Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Thu, 3 Nov 2022 16:32:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?:trollface:=20=E6=B7=BB=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=B8=AAtoTree=E7=9A=84=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/stream/TerminableWrappedStream.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java index 479c86f47..1b20153f5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java @@ -226,7 +226,32 @@ public interface TerminableWrappedStream idGetter, final Function pIdGetter, final BiConsumer> childrenSetter) { - return collect(CollectorUtil.toTree(idGetter, pIdGetter, childrenSetter, isParallel())); + return toTree(idGetter, pIdGetter, null, childrenSetter); + } + + /** + *

将集合转换为树,传入 {@code parentId == value} 来判断树的根节点 + * 因为需要在当前传入数据里查找,所以这是一个结束操作
+ * + * @param idGetter id的getter对应的lambda,可以写作 {@code Student::getId} + * @param pIdGetter parentId的getter对应的lambda,可以写作 {@code Student::getParentId} + * @param pIdValue parentId的值,支持 {@code null} + * @param childrenSetter children的setter对应的lambda,可以写作{ @code Student::setChildren} + * @param 此处是id、parentId的泛型限制 + * @return list 组装好的树
+ * eg: + *

{@code
+	 * List studentTree = EasyStream.of(students).
+	 * 	toTree(Student::getId, Student::getParentId, 0L, Student::setChildren);
+	 * }
+ * @author VampireAchao + */ + default > List toTree( + final Function idGetter, + final Function pIdGetter, + final R pIdValue, + final BiConsumer> childrenSetter) { + return collect(CollectorUtil.toTree(idGetter, pIdGetter, pIdValue, childrenSetter, isParallel())); } /** From 654117d9bae8680233f5dac2b2d8a5eac1381b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=B6=85?= Date: Thu, 3 Nov 2022 08:43:55 +0000 Subject: [PATCH 2/4] Update hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java light weight modify --- .../java/cn/hutool/core/stream/TerminableWrappedStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java index 1b20153f5..e1bb7b647 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java @@ -230,7 +230,7 @@ public interface TerminableWrappedStream将集合转换为树,传入 {@code parentId == value} 来判断树的根节点 + *

将集合转换为树,传入 {@code parentId == pidValue} 来判断树的根节点 * 因为需要在当前传入数据里查找,所以这是一个结束操作
* * @param idGetter id的getter对应的lambda,可以写作 {@code Student::getId} From 3ebbf25d46c836a67dbbafa060ea1e617bbe60a0 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Thu, 3 Nov 2022 16:45:04 +0800 Subject: [PATCH 3/4] =?UTF-8?q?:trollface:=20=E4=BD=BF=E7=94=A8CollectorUt?= =?UTF-8?q?il=E4=B8=AD=E7=9A=84=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/stream/TerminableWrappedStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java index 1b20153f5..31ace5da8 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java @@ -226,7 +226,7 @@ public interface TerminableWrappedStream idGetter, final Function pIdGetter, final BiConsumer> childrenSetter) { - return toTree(idGetter, pIdGetter, null, childrenSetter); + return collect(CollectorUtil.toTree(idGetter, pIdGetter, childrenSetter, isParallel())); } /** From ded14796cfcdec3dab29cefe07b6ea60bd7ae5bd Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Thu, 3 Nov 2022 16:46:32 +0800 Subject: [PATCH 4/4] :trollface: make final --- .../java/cn/hutool/core/stream/TerminableWrappedStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java index 7e890d4d9..5c61433a0 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java @@ -200,7 +200,7 @@ public interface TerminableWrappedStream value类型 * @return map */ - default Map toIdxMap(Function valueMapper) { + default Map toIdxMap(final Function valueMapper) { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); return EasyStream.of(toList()).toMap(e -> index.incrementAndGet(), valueMapper, (l, r) -> r); }