add method

This commit is contained in:
Looly
2021-11-05 00:54:30 +08:00
parent 9c6339a99c
commit fa4f71a112
5 changed files with 38 additions and 10 deletions

View File

@@ -12,6 +12,7 @@ import java.io.StringWriter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.function.Consumer;
/**
* 通过转换器将你的实体转化为TreeNodeMap节点实体 属性都存在此处,属性有序,可支持排序
@@ -174,6 +175,20 @@ import java.util.List;
return (List<Tree<T>>) this.get(treeNodeConfig.getChildrenKey());
}
/**
* 递归树并处理子树下的节点:
*
* @param consumer 节点处理器
* @since 5.7.16
*/
public void walk(Consumer<Tree<T>> consumer) {
consumer.accept(this);
final List<Tree<T>> children = getChildren();
if(CollUtil.isNotEmpty(children)){
children.forEach((tree)-> tree.walk(consumer));
}
}
/**
* 设置子节点,设置后会覆盖所有原有子节点
*

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
/**
@@ -66,4 +67,13 @@ public class TreeTest {
Assert.assertEquals(treeNodes.size(), 2);
}
@Test
public void walkTest(){
List<String> ids = new ArrayList<>();
final Tree<String> tree = TreeUtil.buildSingle(nodeList, "0");
tree.walk((tr)-> ids.add(tr.getId()));
Assert .assertEquals(7, ids.size());
}
}