java--list转树形结构-创新互联
                                            
                                                java–list转树形结构
文章标题:java--list转树形结构-创新互联
文章URL:http://www.cqwzjz.cn/article/ddspgg.html
                                            
                                        1. 双重循环
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网页空间、营销软件、网站建设、同仁网站维护、网站推广。
2. 递归
3. Stream()
1. 双重循环
@Override
	public ListgetAddressTree1() {// 获取数据库中的所有address数据
		Listlist = this.baseMapper.getAddressTree();
		// 返回的树形数据
		Listtree = new ArrayList();
		// 第一次遍历
		for (Address address : list) {	// 找到根节点,这里我的根节点的pid为0
			if (address.getPid().equals("0")) {		tree.add(address);
			}
			// 定义list用于存储子节点
			Listchildren = new ArrayList();
			// 再次遍历list,找到子节点
			for (Address node : list) {		// 子节点的pid等于父节点的id
				if (node.getPid().equals(address.getId())) {children.add(node);
				}
			}
			// 给父节点设置子节点
			address.setChildren(children);
		}
		return tree;
	}2. 递归
@Override
    public ListgetAddressTree2() {// 获取数据库中的所有address数据
        Listlist = this.baseMapper.getAddressTree();
        // 返回的树形数据
        Listtree = new ArrayList();
        // 第一次遍历
        for (Address address : list) {// 找到根节点,这里我的根节点的pid为0
            if (address.getPid().equals("0")) {tree.add(findChild(address, list));
            }
        }
        return tree;
    }
    private Address findChild(Address address, Listlist) {// 定义list用于存储子节点
        Listchildren = new ArrayList();
        for (Address node : list) {// 找到根节点,这里我的根节点的pid为0
            if (node.getPid().equals(address.getId())) {// 调用递归
                children.add(findChild(node, list));
            }
        }
        address.setChildren(children);
        return address;
    }3. Stream()
@Override
    public ListgetAddressTree() {// 获取数据库中的所有address数据
        Listaddresses = this.baseMapper.getAddressTree();
        // 操作所有的address数据
        // 通过Collectors.groupingBy(Address::getPid)方法对addresses按照Pid进行分组,也就是将pid相同的放在一起
        Map>addressMap = addresses.stream().collect(Collectors.groupingBy(Address::getPid));
        // 循环addresses,给它设置children属性
        addresses.forEach(address ->{address.setChildren(addressMap.get(address.getId()));
        });
        // 现在已经形成了多棵树,最后我们再通过filter()方法挑选出根节点的那颗树即可。 这里我的根节点的pid为0
        ListresultList = addresses.stream().filter(item ->item.getPid().equals("0"))
                .collect(Collectors.toList());
        return resultList;
    } 你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章标题:java--list转树形结构-创新互联
文章URL:http://www.cqwzjz.cn/article/ddspgg.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 
