1. 雙重循環(huán)
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、同仁網(wǎng)站維護(hù)、網(wǎng)站推廣。2. 遞歸
3. Stream()
1. 雙重循環(huán)
@Override
public ListgetAddressTree1() {// 獲取數(shù)據(jù)庫(kù)中的所有address數(shù)據(jù)
Listlist = this.baseMapper.getAddressTree();
// 返回的樹形數(shù)據(jù)
Listtree = new ArrayList();
// 第一次遍歷
for (Address address : list) { // 找到根節(jié)點(diǎn),這里我的根節(jié)點(diǎn)的pid為0
if (address.getPid().equals("0")) { tree.add(address);
}
// 定義list用于存儲(chǔ)子節(jié)點(diǎn)
Listchildren = new ArrayList();
// 再次遍歷list,找到子節(jié)點(diǎn)
for (Address node : list) { // 子節(jié)點(diǎn)的pid等于父節(jié)點(diǎn)的id
if (node.getPid().equals(address.getId())) {children.add(node);
}
}
// 給父節(jié)點(diǎn)設(shè)置子節(jié)點(diǎn)
address.setChildren(children);
}
return tree;
}
2. 遞歸
@Override
public ListgetAddressTree2() {// 獲取數(shù)據(jù)庫(kù)中的所有address數(shù)據(jù)
Listlist = this.baseMapper.getAddressTree();
// 返回的樹形數(shù)據(jù)
Listtree = new ArrayList();
// 第一次遍歷
for (Address address : list) {// 找到根節(jié)點(diǎn),這里我的根節(jié)點(diǎn)的pid為0
if (address.getPid().equals("0")) {tree.add(findChild(address, list));
}
}
return tree;
}
private Address findChild(Address address, Listlist) {// 定義list用于存儲(chǔ)子節(jié)點(diǎn)
Listchildren = new ArrayList();
for (Address node : list) {// 找到根節(jié)點(diǎn),這里我的根節(jié)點(diǎn)的pid為0
if (node.getPid().equals(address.getId())) {// 調(diào)用遞歸
children.add(findChild(node, list));
}
}
address.setChildren(children);
return address;
}
3. Stream()
@Override
public ListgetAddressTree() {// 獲取數(shù)據(jù)庫(kù)中的所有address數(shù)據(jù)
Listaddresses = this.baseMapper.getAddressTree();
// 操作所有的address數(shù)據(jù)
// 通過Collectors.groupingBy(Address::getPid)方法對(duì)addresses按照Pid進(jìn)行分組,也就是將pid相同的放在一起
Map>addressMap = addresses.stream().collect(Collectors.groupingBy(Address::getPid));
// 循環(huán)addresses,給它設(shè)置children屬性
addresses.forEach(address ->{address.setChildren(addressMap.get(address.getId()));
});
// 現(xiàn)在已經(jīng)形成了多棵樹,最后我們?cè)偻ㄟ^filter()方法挑選出根節(jié)點(diǎn)的那顆樹即可。 這里我的根節(jié)點(diǎn)的pid為0
ListresultList = addresses.stream().filter(item ->item.getPid().equals("0"))
.collect(Collectors.toList());
return resultList;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)標(biāo)題:java--list轉(zhuǎn)樹形結(jié)構(gòu)-創(chuàng)新互聯(lián)
瀏覽地址:http://www.rwnh.cn/article16/ddspgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、建站公司、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容