java關於map用來篩選的用法


我有一個實體 PropTemplateItem{id,名稱,父節點,模版id},父節點為root是定義為根節點。

例如數據:  

001,顏色,root,123

002,白色,001,123

003,紅色,001,123

004,配置,root,123

005,低配,004,123

006,高配,004,123

自己定義一個model(PropTemplateItemInfo模型,有一個根節點,有多個子節點)

怎樣才能把上述示例數據中存放到自定義模型里?

1.通過數據庫直接查詢(先查出所有根節點,在遍歷所有根節點查詢起所有子節點)     與數據庫交互太多,特別在數據量大了時缺點更明顯

2.通過數據庫查詢出該模版下所有節點,然后通過遍歷這個列表,判斷為root節點的就在這個循環里面在遍歷這個列表,找到父節點id等於這個root節點id的節點,放到自己定義模型里面去。遍歷次數應該是n(list.size())*n 這是最容易想到的辦法,但嵌套的遍歷在數據量大時消耗的性能就比較高了

3.通過數據庫查詢出該模版下所有節點,通過map來存放篩選結果,遍歷次數就只有n(list.size())*2

代碼如下

第一次遍歷這個列表時,找到所有root節點,放在map中,map的key就是他的id,然后新建一個PropTemplateItemInfo對象,把他的root節點放進去。

第二次遍歷這個列表時,判斷map里面是否存在這個key,如果存在,就把這個對象從map中取出來,把他的子節點的值add進那個map。

我們最終要返回圖中名為infoList的對象,因為圖中2個循環中全在操作同一個名為tpl的對象,所以infoList中的tpl對象也會隨之變化。

如有不足,請大家分享您的看法建議,互相學習,相互提高。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM