public class TreeVo {
private Integer id;
private Integer fid;
private String name;
List chi;
//省get set方法
}
/**
* 寻找顶级父节点
* @param array
* @return
*/
public static List<TreeVo> getData(List<TreeVo> array) {
List<TreeVo> list =new ArrayList<>();
if(array !=null ){
Set<Integer> set =new HashSet<>();
Set<Integer> setParentId = new HashSet<>();
Map<Integer,Object> mapChild = new HashMap<>();
for (TreeVo treeMode : array) {
set.add(treeMode.getFid());
mapChild.put(treeMode.getId(), treeMode);
}
for (Integer pid : set) {
if (mapChild.get(pid) == null) {
setParentId.add(pid);
}
}
for(TreeVo treeVo : array){
if(setParentId.contains(treeVo.getFid())){
Integer itemid = treeVo.getId();
treeVo.setChi(addList(array, itemid));
list.add(treeVo);
}
}
}else {
return null;
}
return list;
}
/**
* 核心工具类
* @param array
* @param itemid
* @return
*/
private static List<TreeVo> addList(List<TreeVo> array, Integer itemid) {
List<TreeVo> list = new ArrayList<>();
for (TreeVo treeModel : array) {
if (itemid.equals(treeModel.getFid())) {
Integer cid = treeModel.getId();
if (addList(array, cid).size() != 0) {
treeModel.setChi(addList(array, cid));
}
list.add(treeModel);
}
}
return list;
}