由于在查询出的每条记录里,都有unit_id和par_unit_id,所以只需要找出在unit_id里没有的par_unit_id,则该条记录为根节点,代码如下:
public List getRootUnits2(List list){
List rootList = new ArrayList();
for(int i=0; i < list.size(); i++){
boolean isRoot = true;
for(int j=0; j< list.size();j++){
Map parMap = (Map)list.get(i);
Map map = (Map)list.get(j);
if(StringUtils.equals((String)parMap.get("par_unit_id"), (String)map.get("unit_id"))){
isRoot = false;
break; //找到了父节点
}
}
if(isRoot){
rootList.add(list.get(i));
}
}
return rootList;
}