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;
    }
相关推荐
江湖有缘1 分钟前
Docker实战 | 使用Docker部署Readeck书签管理工具
java·docker·eureka
小毛驴8505 分钟前
mvn help:effective-settings 与 mvn help:effective-pom
java·linux·前端
silvamux_18 分钟前
MiniMax API 调用教程:兼容 OpenAI 写法
java·数据库·elasticsearch
染指111022 分钟前
145.Agent-LangGraph基础概念和安装和简单代码示例
java·服务器·数据库·langchain·agents
Doker 多克25 分钟前
ForkJoinPool 详解
java·多线程
Wang's Blog36 分钟前
Java 项目实战: 交友项目 - Dubbo 启动检查
java·dubbo·交友
零基础12342 分钟前
权限管理怎么做?从“资格”与“空间”双维度设计一套可落地的权限体系
java·服务器·数据库
starzy19901 小时前
Flink Task 调度任务深度剖析:从调度策略到故障恢复的完整链路
java·大数据·flink
开开心心_Every1 小时前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 技术架构与选型剖析
java·架构·交友