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..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); } @@ -229,6 +229,31 @@ public interface TerminableWrappedStream将集合转换为树,传入 {@code parentId == pidValue} 来判断树的根节点 + * 因为需要在当前传入数据里查找,所以这是一个结束操作
+ * + * @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())); + } + /** * 将集合转换为树,自定义根节点的判断条件 * 因为需要在当前传入数据里查找,所以这是一个结束操作