!859 【6.x】添加一个toTree的重载

Merge pull request !859 from 阿超/v6-dev
This commit is contained in:
Looly 2022-11-06 13:10:43 +00:00 committed by Gitee
commit 19d9c955a5
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

View File

@ -200,7 +200,7 @@ public interface TerminableWrappedStream<T, S extends TerminableWrappedStream<T,
* @param <U> value类型
* @return map
*/
default <U> Map<Integer, U> toIdxMap(Function<? super T, ? extends U> valueMapper) {
default <U> Map<Integer, U> toIdxMap(final Function<? super T, ? extends U> 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<T, S extends TerminableWrappedStream<T,
return collect(CollectorUtil.toTree(idGetter, pIdGetter, childrenSetter, isParallel()));
}
/**
* <p>将集合转换为树传入 {@code parentId == pidValue} 来判断树的根节点
* 因为需要在当前传入数据里查找所以这是一个结束操作 <br>
*
* @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 <R> 此处是idparentId的泛型限制
* @return list 组装好的树 <br>
* eg:
* <pre>{@code
* List<Student> studentTree = EasyStream.of(students).
* toTree(Student::getId, Student::getParentId, 0L, Student::setChildren);
* }</pre>
* @author VampireAchao
*/
default <R extends Comparable<R>> List<T> toTree(
final Function<T, R> idGetter,
final Function<T, R> pIdGetter,
final R pIdValue,
final BiConsumer<T, List<T>> childrenSetter) {
return collect(CollectorUtil.toTree(idGetter, pIdGetter, pIdValue, childrenSetter, isParallel()));
}
/**
* 将集合转换为树自定义根节点的判断条件
* 因为需要在当前传入数据里查找所以这是一个结束操作