java8 实现递归查询

1、实体类user

c 复制代码
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("user")
public class User {
 
    
    private Integer id;
 
 
    private String parentId;
 
 
    @TableField(exist = false)
    private List<User> childList;
}

2. 代码实现

c 复制代码
/**
 * 实现递归
 *
 */
public HttpResponses<List<User>> getUser(){
  List<User> list = this.userService.list();
        //用map写法
        /*List<User> listUser = list.stream().filter(user ->         
  user.getParentId().equals("0")).map(user -> {
            user.setChildList(getChildrens(user,list));
            return user;
        }).collect(Collectors.toList());*/
 
        //peek写法
  List<User> listUser = list.stream().filter(user -> user.getParentId().equals("0"))
                .peek(user -> 
  user.setChildList(getChildrens(user,list))).collect(Collectors.toList());
      
        return success(listUser);
 }
 
 
/**
 * 代码实现递归方法
 *
 */
public List<User> getChildrens(User user,List<User> userList){
        List<User> childrens = userList.stream().filter(u -> Objects.equals(u.getParentId(),user.getId())).map(
                u -> {
                   u.setChildList(getChildrens(u,userList));
                   return u;
                }
        ).collect(Collectors.toList());
        return childrens;
    }
相关推荐
创码小奇客7 分钟前
Spring Boot 中分布式事务的奇幻漂流
java·spring boot·trae
我是大头鸟15 分钟前
ecplise 工具 没有Java EE Tools 选项
java·java-ee
IDRSolutions_CN40 分钟前
开发PDF时,如何比较 PDF 文件
java·经验分享·pdf·软件工程·团队开发
程序员JerrySUN1 小时前
驱动开发硬核特训 · Day 1
java·linux·运维·开发语言·c++·驱动开发
郑州吴彦祖7721 小时前
UTF-8和GBK编码的区别和详细解释
java·utf-8
盖世英雄酱581361 小时前
为什么类型转换,为导致索引失效
java·后端
步行cgn1 小时前
Java 集合有序性与重复性总结及记忆技巧
java·开发语言·程序人生·面试·个人开发·学习方法
顾林海1 小时前
深度解析HashSet工作原理
android·java·面试
爱的叹息1 小时前
Spring MVC 逻辑视图(JSP、Thymeleaf、FreeMarker)与非逻辑视图(JSON、Excel、PDF、XML)详解及示例
java·spring·mvc
程序员鱼皮2 小时前
2025 全新阿里巴巴 Java 面经汇总(附答案模板),建议收藏!
java·后端·面试