有個需求,是一張地區表,地區表中包含多層級的地區,如:中國,河北省,邢臺市,橋東區。一共有4個層級。數據庫字段設計爲
node
我要將這些數據轉爲有層級關係的json數據:很顯然數據的結構是個樹,因而就要創建樹的結構:數據庫
1 public class Node{ 2 public Map<Integer,Node> childs = new HashMap<>(); 3 public String name; public Integer id; 4 public Integer parentId; 5 }
從數據庫取到全部數據 attrAreas進行一個樹的構建:json
1 public void local(List<ModelAttrArea> attrAreas){ //創建根節點
2 Node root=new Node(); Map<Integer,Node> maps= new HashMap<>(); //遍歷全部節點,將節點放入節點map中
3 for(ModelAttrArea temp:attrAreas) { 4 Node node = new Node(); 5 node.name = temp.getName(); 6 node.id = temp.getID(); 7 node.parentId = temp.getParentId(); 8 maps.put(temp.getID(),node); 9 } 10
11 //開始遍歷已經放好的map,將沒有父節點的節點放倒根目錄下,把有父節點的節點,找到父節點,而後給父節點添加子節點。
12 for (Map.Entry<Integer, Node> entry : maps.entrySet()){ 13 Node e=entry.getValue(); 14 Integer parentId = e.parentId; 15 if(parentId==null){ 16 root.childs.put(e.id, e); 17 }else{ 18 Node pnode = maps.get(parentId); 19 pnode.childs.put(e.id,e); 20 } 21 } 22 } 23 }
參考地址:http://www.imooc.com/article/6909?block_id=tuijian_wzui