在工作中我们经常会构造无限级的树形数据。此时构造可以使用下面的这个方法,num 参数是根节点的父级编号(该父级编号在表中查不到编号为该父级编号的结点),List集合指的是所有符合条件的结点实体。调用这个方法,会发现表中的children即为子节点,已经封装好了数据,直接返回给前台即可。
/**
* 递归获得全部子
*
* @param num
* @param list
* @return
*/
private List<Map<String, Object>> getTreeChild(String num,List<Map<String,Object>> list) {
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
Iterator<Map<String, Object>> iterator = list.iterator();
while (iterator.hasNext()) {
Map<String, Object> map = iterator.next();
// 父节点等于num的放入resultList
if (num.equals((String) map.get("parentThingNum"))) {
resultList.add(map);
iterator.remove();
}
}
if (!resultList.isEmpty()) {
for (Map<String, Object> map : resultList) {
List<Map<String, Object>> childList = getTreeChild((String) map.get("thingNum"), list);
if (!childList.isEmpty()) {
map.put("children", childList);
}
}
}
return resultList;
}