工具类
#########开始##########
package hm.translate.form.indexes;
import java.util.ArrayList;
import java.util.List;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import hm.translate.bean.indexes.Mcv;
public class TreeToolUtils {
private List rootList; //根节点对象存放到这里
private List bodyList; //其他节点存放到这里,可以包含根节点
public TreeToolUtils(List rootList, List bodyList) {
this.rootList = rootList;
this.bodyList = bodyList;
}
public List getTree(){ //调用的方法入口
if(bodyList != null && !bodyList.isEmpty()){
//声明一个map,用来过滤已操作过的数据
Map map = Maps.newHashMapWithExpectedSize(bodyList.size());
rootList.forEach(beanTree -> getChild(beanTree,map));
return rootList;
}
return null;
}
public void getChild(Mcv treeDto,Map map){
List childList = Lists.newArrayList();
.filter(c -> !map.containsKey(c.getValue()))
.filter(c ->c.getParentmcvid().equals(treeDto.getValue()))
.forEach(c ->{
map.put(String.valueOf(c.getValue()),String.valueOf(c.getParentmcvid()));
getChild(c,map);
childList.add(c);
});
treeDto.setChildren(childList);
}
}
##########结束###########
Mcv实体类
##########开始##################
package hm.translate.bean.indexes;
import java.util.List;
public class Mcv {
private Integer value;
private String label;
private Integer parentmcvid;
private List children;
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Integer getParentmcvid() {
return parentmcvid;
}
public void setParentmcvid(Integer parentmcvid) {
this.parentmcvid = parentmcvid;
}
}
##########结束#############
调用示例
TreeToolUtils utils = new TreeToolUtils(rootList, list);
List result = utils.getTree();
jsonArray = JSONArray.toJSONString(result);