// 1. 获取所有数据List,找到*ID voList.stream().filter( vo -> vo.getParentId() == null ).map( (menu) -> { menu.setHiddenDictVos( getChildrens( menu, voList ) ); return menu; } ).collect( Collectors.toList() ); //2. 把子类塞进去 private List<HiddenDictVo> getChildrens(HiddenDictVo menu, List<HiddenDictVo> voList) { return voList.stream().filter( dictVO -> { return menu.getDictId().equals(dictVO.getParentId() ); } ).map( dictVO -> { //1、找到子类 dictVO.setHiddenDictVos( getChildrens( dictVO, voList ) ); return dictVO; } ).collect( Collectors.toList() ); } // 实体类 public class HiddenDictVo { //xxx其他属性略 private List<HiddenDictVo> hiddenDictVos; }