package mytest;
import java.util.ArrayList;
import java.util.List;
public class TreeTest {
public static void main(String[] args) {
List<Category> dataList = new ArrayList<Category>(){{
add(new Category("1","0","档案模板"));
add(new Category("2","1","会议模板"));
add(new Category("3","2","议1模板"));
add(new Category("4","2","议2模板"));
add(new Category("5","1","公文模板"));
add(new Category("6","5","公文1模板"));
add(new Category("7","5","公文2模板"));
add(new Category("8","7","公文2-1模板"));
}};
List<Category> categories = list2Tree(dataList,"1");
List<Category> resList= findByName(dataList,"关键字");
System.out.println(categories);
System.out.println(resList);
}
private static List<Category> list2Tree(List<Category> dataList, String pid) {
List<Category> resList = new ArrayList<>();
for (Category category : dataList) {
if(category.getId().equals(pid)) {
resList.add(category);
category.setChildren(getChildrenByid(dataList,category.getId()));
break;
}
}
return resList;
}
private static List<Category> getChildrenByid(List<Category> dataList, String id) {
List<Category> childList = new ArrayList<>();
for (Category category : dataList) {
if(category.getPid().equals(id)) {
category.setChildren(getChildrenByid(dataList,category.getId()));
childList.add(category);
}
}
return childList;
}
private static List<Category> findByName(List<Category> dataList,String name){
for (int i = dataList.size()-1; i >= 0; i--) {
Category category = dataList.get(i);
List<Category> children = category.getChildren();
if (children!=null && children.size()>0){
findByName(children,name);
}
if (!category.getName().contains(name) && children.size() == 0){
dataList.remove(i);
}
}
return dataList;
}
}
class Category {
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Category> getChildren() {
return children;
}
public void setChildren(List<Category> children) {
this.children = children;
}
@Override
public String toString() {
return "Category{" +
"id='" + id + '\'' +
", pid='" + pid + '\'' +
", name='" + name + '\'' +
", children=" + children +
'}';
}
public Category(String id, String pid, String name) {
this.id = id;
this.pid = pid;
this.name = name;
}
private String id;
private String pid;
private String name;
private List<Category> children;
}