packagecn.chendd.tips.examples.treeview;import...;/**
*数据转换测试*
* @authorchendd
* @date2020/x/xx 22:34
*/public classDataConvertTest {privateIntegerROOT_ID= -1;//约定根节点为-1privateListcityList;@Testpublic voidtest(){
System.out.println("======原始数据======");
System.out.println(JSONObject.toJSONString(cityList,true));
Stream rootCity =cityList.stream().filter(city ->ROOT_ID.equals(city.getParentId()));
List treeviewList =newArrayList<>();this.convertTreeview(rootCity, treeviewList);for(Treeview treeview : treeviewList) {this.collectList(treeview ,this.cityList);
}
System.out.println("======转换后的数据======");
System.out.println(JSON.toJSONString(treeviewList ,true));
}/**
*获取原始数据中的一级菜单*/private voidconvertTreeview(Stream cityStream, List treeviewList) {
cityStream.forEach(city -> {
Treeview treeview =newTreeview();
treeview.setNodeId(city.getId());
treeview.setText(city.getName());
treeview.setState(null);
treeview.setNodes(null);treeviewList.add(treeview);
});
}/**
*遍历一级菜单,并递归调用字级菜单,查找对应的菜单节点*/private voidcollectList(Treeview treeview, List cityList) {
Integer nodeId = treeview.getNodeId();for(City city : cityList) {
Integer parentId = city.getParentId();if(parentId !=null&& parentId.equals(nodeId)){if(treeview.getNodes() ==null){
treeview.setNodes(newArrayList<>());
}
Treeview childMenuTreeview =newTreeview();
childMenuTreeview.setNodeId(city.getId());
childMenuTreeview.setText(city.getName());
childMenuTreeview.setState(null);
treeview.getNodes().add(childMenuTreeview);this.collectList(childMenuTreeview , cityList);
}
}
}@Beforepublic voidinit(){cityList=newArrayList<>();cityList.add(newCity(1,"北京市",ROOT_ID));cityList.add(newCity(2,"海淀区",1));cityList.add(newCity(3,"朝阳区",1));cityList.add(newCity(4,"湖北省",ROOT_ID));cityList.add(newCity(5,"武汉市",4));cityList.add(newCity(6,"襄阳市",4));cityList.add(newCity(7,"襄城区",6));cityList.add(newCity(8,"襄州区",6));cityList.add(newCity(9,"樊城区",6));cityList.add(newCity(10,"老河口市",6));cityList.add(newCity(11,"谷城县",6));cityList.add(newCity(12,"南漳县",6));cityList.add(newCity(13,"枣阳市",6));cityList.add(newCity(14,"保康县",6));cityList.add(newCity(15,"宜城市",6));
}
}