生成分类层级列表
在做公司項目的時候遇到的一個小問題
將一個存放所有數據的list轉成具有層級關系的list
如下圖是希望得到的結果,初始結構是所有數據存放在一個list里面
?
CategoryVO{
? ? ? ?categoryId? 分類ID
?????? parentId?????? 父級ID
?????? categoryLevel??????????? 分類層級
?????? children??????? 子分類(ArrayList)
}
?
map?? ->HashMap<分類id, 分類VO>
result? ->ArrayList<分類VO>
?
for (CategoryVO vo : originList) {
??? map.put(vo.getCategoryld(), vo);//map存儲id->VO的映射
}
?
for (CategoryVO vo : originList) {
??? if (1.equals(vo.getCategoryLevel())){
??????? result.add(vo); //是第一級則放入result列表中
??? }else {
??????? CategoryVO parentCategory = map.get(vo.getParentld();
??????? if (parentCategory != null) { //不是第一級則放入父級children列表中
??????????? parentCategory.getChildren().add(vo);
??????? }
??? }
}
優點:支持任意層級,只查詢一次數據庫,代碼簡潔。
缺點:可讀性較差,不適合數據量過大場景。
總結
- 上一篇: python写的程序怎么打包成exe_p
- 下一篇: Spring方法注入 @Lookup注解