java8 lambda 处理分类和子分类的技巧

本文介绍了一个使用Java实现的分类树构建方法,通过递归方式构建带有层级关系的分类树,并对分类进行了排序处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public List<DealCategory> getCategories(){

     List<DealCategory> roots = getAllWithoutDeleted();  // 这条语句可能是从缓存中或者是从数据库中直接拉去符合条件的数据

     dealCategories.stream().filter(dealCategory -> (dealCategory.getParentId() == 0)).collect(Collectors.toList());   //  过滤出 父节点为0 所有分类
     //  对所有分类进行排序
     dealCategories.sort(new Comparator<DealCategory>(){

     	@Override
     	public int compare(DealCategory o1,DealCategory o2){
     		return o1.getOrderNum() > o2.getOrderNum() ? 1:-1;
     	}
     });
     //  过滤出所有的字节点 
     List<DealCategory> subs = dealCategories.stream().filter(dealCategory ->(dealCategory.getParentId() != 0)).collect(Collectors.toList());

     //  对根分类进行遍历操作 -------->>>>>>>> 递归操作

     roots.forEach(root -> buildSubs(root,subs));
     return roots;
}

public static void buildSubs(DealCategory Parent,List<DealCategory> subs){
     List<DealCategory> chilren = subs.stream().filter(sub -> (sub.getParentId()==getParent.getId())).collect(Collectors.toList());  //  获取子节点中属于父节点的分类
     //  递归判断开始
     if(!Collections.isEmpt(chilren)){ //  说明是有子类
      Parent.setChildren(chilren);   //  把该分类下的子类都构建关联关系
      chilren.forEach(child ->buildSubs(child,subs));//  再次递归构建
     }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值