java--list轉樹形結構-創(chuàng)新互聯(lián)

java–list轉樹形結構

1. 雙重循環(huán)

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名與空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設、同仁網(wǎng)站維護、網(wǎng)站推廣。

2. 遞歸

3. Stream()

1. 雙重循環(huán)

@Override
	public List
getAddressTree1() {// 獲取數(shù)據(jù)庫中的所有address數(shù)據(jù) List
list = this.baseMapper.getAddressTree(); // 返回的樹形數(shù)據(jù) List
tree = new ArrayList
(); // 第一次遍歷 for (Address address : list) { // 找到根節(jié)點,這里我的根節(jié)點的pid為0 if (address.getPid().equals("0")) { tree.add(address); } // 定義list用于存儲子節(jié)點 List
children = new ArrayList
(); // 再次遍歷list,找到子節(jié)點 for (Address node : list) { // 子節(jié)點的pid等于父節(jié)點的id if (node.getPid().equals(address.getId())) {children.add(node); } } // 給父節(jié)點設置子節(jié)點 address.setChildren(children); } return tree; }

2. 遞歸

@Override
    public List
getAddressTree2() {// 獲取數(shù)據(jù)庫中的所有address數(shù)據(jù) List
list = this.baseMapper.getAddressTree(); // 返回的樹形數(shù)據(jù) List
tree = new ArrayList
(); // 第一次遍歷 for (Address address : list) {// 找到根節(jié)點,這里我的根節(jié)點的pid為0 if (address.getPid().equals("0")) {tree.add(findChild(address, list)); } } return tree; } private Address findChild(Address address, List
list) {// 定義list用于存儲子節(jié)點 List
children = new ArrayList
(); for (Address node : list) {// 找到根節(jié)點,這里我的根節(jié)點的pid為0 if (node.getPid().equals(address.getId())) {// 調用遞歸 children.add(findChild(node, list)); } } address.setChildren(children); return address; }

3. Stream()

@Override
    public List
getAddressTree() {// 獲取數(shù)據(jù)庫中的所有address數(shù)據(jù) List
addresses = this.baseMapper.getAddressTree(); // 操作所有的address數(shù)據(jù) // 通過Collectors.groupingBy(Address::getPid)方法對addresses按照Pid進行分組,也就是將pid相同的放在一起 Map>addressMap = addresses.stream().collect(Collectors.groupingBy(Address::getPid)); // 循環(huán)addresses,給它設置children屬性 addresses.forEach(address ->{address.setChildren(addressMap.get(address.getId())); }); // 現(xiàn)在已經形成了多棵樹,最后我們再通過filter()方法挑選出根節(jié)點的那顆樹即可。 這里我的根節(jié)點的pid為0 List
resultList = addresses.stream().filter(item ->item.getPid().equals("0")) .collect(Collectors.toList()); return resultList; }

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標題:java--list轉樹形結構-創(chuàng)新互聯(lián)
瀏覽地址:http://www.muchs.cn/article16/ddspgg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、建站公司網(wǎng)站排名、網(wǎng)站設計公司、網(wǎng)站導航、外貿網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設