public static void main(String[] args) {
List<Map<String, Object>> input = new ArrayList<>();
Map<String,Object> map= new HashMap<>();
map.put("id","1");
map.put("cId","2");
Map<String,Object> map1= new HashMap<>();
map1.put("id","1");
map1.put("cId","3");
Map<String,Object> map2= new HashMap<>();
map2.put("id","2");
map2.put("cId","5");
Map<String,Object> map3= new HashMap<>();
map3.put("id","3");
map3.put("cId",null);
Map<String,Object> map4= new HashMap<>();
map4.put("id","4");
map4.put("cId",null);
Map<String,Object> map5= new HashMap<>();
map5.put("id","5");
map5.put("cId",null);
input.add(map);
input.add(map1);
input.add(map2);
input.add(map3);
input.add(map4);
input.add(map5);
List<Map<String, Object>> output = buildTree(input);
}
public static List<Map<String, Object>> buildTree(List<Map<String, Object>> list) {
List<Map<String,Object>> rootList = new ArrayList<>();
Map<String,String> childrenMap = new HashMap<>();
Map<String,Map<String,Object>> listMap = new HashMap<>();
for (Map<String,Object>item: list) {
String id = item.get("id")!=null?item.get("id").toString():null;
String cid = item.get("cId")!=null ? item.get("cId").toString():null;
if (cid!=null) {
childrenMap.put(cid,id);
}
Map<String,Object> itemMap = new HashMap<>(item);
itemMap.put("children",new ArrayList<>());
listMap.put(id,itemMap);
}
for (String cId : childrenMap.keySet()) {
String id = childrenMap.get(cId);
Map<String,Object> parentMap = listMap.get(id);
if (parentMap!=null) {
Map<String,Object> newMap = parentMap;
List<Map<String,Object>>mapList = (List<Map<String, Object>>) newMap.get("children");
mapList.add(listMap.get(cId));
newMap.put("children",mapList);
}
}
for (String cId : childrenMap.keySet()) {
listMap.remove(cId);
}
rootList.addAll(listMap.values());
System.out.println(rootList);
return rootList;
}
输入的List<Map<String,Object>>

输出的List<Map<String,Object>>
