java将数据封装为树结构_JAVA代码实现多级树结构封装对象
JDK1.8
public class RegionBeanTree implements Serializable{
//保證3個參數(shù) 其他隨意
private static final long serialVersionUID = 1L;
private String code;
private String pid;
private String label;
}
public class TreeToolUtils {
private List rootList; //根節(jié)點對象存放到這里
private List bodyList; //其他節(jié)點存放到這里,可以包含根節(jié)點
public TreeToolUtils(List rootList, List bodyList) {
this.rootList = rootList;
this.bodyList = bodyList;
}
public List getTree(){ //調(diào)用的方法入口
if(bodyList != null && !bodyList.isEmpty()){
//聲明一個map,用來過濾已操作過的數(shù)據(jù)
Map map = Maps.newHashMapWithExpectedSize(bodyList.size());
rootList.forEach(beanTree -> getChild(beanTree,map));
return rootList;
}
return null;
}
public void getChild(RegionBeanTree beanTree,Map map){
List childList = Lists.newArrayList();
bodyList.stream()
.filter(c -> !map.containsKey(c.getCode()))
.filter(c ->c.getPid().equals(beanTree.getCode()))
.forEach(c ->{
map.put(c.getCode(),c.getPid());
getChild(c,map);
childList.add(c);
});
beanTree.setChildren(childList);
}
public static void main(String[] args){
RegionBeanTree beanTree1 = new RegionBeanTree();
beanTree1.setCode("540000");
beanTree1.setLabel("西藏省");
beanTree1.setPid("100000"); //最高節(jié)點
RegionBeanTree beanTree2 = new RegionBeanTree();
beanTree2.setCode("540100");
beanTree2.setLabel("拉薩市");
beanTree2.setPid("540000");
RegionBeanTree beanTree3 = new RegionBeanTree();
beanTree3.setCode("540300");
beanTree3.setLabel("昌都市");
beanTree3.setPid("540000");
RegionBeanTree beanTree4 = new RegionBeanTree();
beanTree4.setCode("540121");
beanTree4.setLabel("林周縣");
beanTree4.setPid("540100");
RegionBeanTree beanTree5 = new RegionBeanTree();
beanTree5.setCode("540121206");
beanTree5.setLabel("阿朗鄉(xiāng)");
beanTree5.setPid("540121");
RegionBeanTree beanTree6 = new RegionBeanTree();
List rootList = new ArrayList<>();
rootList.add(beanTree1);
List bodyList = new ArrayList<>();
bodyList.add(beanTree1);
bodyList.add(beanTree2);
bodyList.add(beanTree3);
bodyList.add(beanTree4);
bodyList.add(beanTree5);
TreeToolUtils utils = new TreeToolUtils(rootList,bodyList);
List result = utils.getTree();
result.get(0);
}
}
總結(jié)
以上是生活随笔為你收集整理的java将数据封装为树结构_JAVA代码实现多级树结构封装对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dbunit java_Java –
- 下一篇: java jtextfield设置不可见