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;
    }
相关推荐
郭龙_Jack2 分钟前
Java 17 到 Java 25:LTS 升级的全面收益与迁移指南
java·开发语言·python
要开心吖ZSH8 分钟前
Java AI Agent 开发中的 RAG 实现方案及小白入门指南
java·ai·agent·rag
掉鱼的猫8 分钟前
Java 流程编排新范式 Solon Flow:一个引擎,七种节点,覆盖规则/任务/工作流/AI 编排全场景
java·workflow
Aaa1111144320 分钟前
四类地址 逻辑地址 线性地址 虚拟地址 物理地址
java
小则又沐风a21 分钟前
深入了解进程概念 第二章
java·linux·服务器·前端
程序猿进阶23 分钟前
OpenClaw Mac 安装教程
java·macos·ai·架构·agent·openclaw
凯瑟琳.奥古斯特36 分钟前
信号分类与特性解析
java·开发语言·职场和发展
JAVA面经实录91740 分钟前
JVM 性能监控 + 全链路分析实战 + 性能优化(完整版)
java·jvm
号码认证服务1 小时前
小米、OPPO、VIVO手机支持号码认证显示公司名吗?
java·服务器·网络·经验分享·智能手机·云计算·php
ChoSeitaku1 小时前
06_可变参数_递归_类和对象_封装
java·数据结构·算法