三、list转树形方法 代码语言:javascript 代码运行次数:0 运行 AI代码解释 publicstaticList<NodeVO>streamToTree(List<NodeVO>treeList,Integer parentId){returntreeList.stream()// 过滤父节点.filter(parent->Objects.equals(parent.getPid(),parentId))// 把父节点children递归赋值成为子节点.peek(child->child...
创建一个方法,用于将List数据转换成Tree。代码示例如下: publicstaticTreeNodebuildTree(List<TreeNode>nodes){Map<String,TreeNode>nodeMap=nodes.stream().collect(Collectors.toMap(node->node.id,Function.identity()));TreeNoderoot=null;for(TreeNodenode:nodes){if(node.parentId==null){root=node;}else{Tr...
package list; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListToTreeTest { public static void main(String[] args) { List<TestEntity> list...
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; class TestEntity { private int id; private String name; private int parentId; private List<TestEntity> children; // Getters and Setters } public class ListToTreeStream { publi...
第二个问题,我的想法是通过一个sql查询查出来所有数据,得到一个 Zone集合,然后就回到了主题,如何用java把list转tree。我第一想法是递归。递归的话,需要考虑几个因素,1.终止条件;2.处理逻辑,3.参数(数据参数,当前层级),4.返回值,然后套入这个问题,分析如下: ...
list.forEach(item->{//设置子节点setChilds.accept(item,parentMap.get(getId.apply(item))); });//过滤出根节点集合,根节点已经包含了孩子节点returnlist.stream().filter(isTop).collect(Collectors.toList()); } 执行结果:
*/publicvoidsetChildren(List<INodeDTO> children); } 复制代码 每个方法接口有详细的注释,无需多说。然后提供通用的转换Function。 /** * 非递归实现平铺数据转成Tree型结构 */staticfinalFunction<List<INodeDTO>,List<INodeDTO>>MULTI_TREE_CONVERTER=sources->sources.stream() ...
package com.jianshu.utils; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.stream.Collectors; /** * @author fubo */ @Slf4j public class TreeUtil { /** * @param list 全部节点列表 * @param rootParentId 根节点ID * @param <T> 节点数据mod...
楼主可以用list的stream流来进行转换例如: //查询数据库所有的数据 List<AllSpaceVo> spaceInfoAllVos = mapperFacade.mapAsList(list, AllSpaceVo.class); //查询出一级空间 List<AllSpaceVo> collect = spaceInfoAllVos.stream() .filter(info -> { if (id == null) { return info.getSpaceParentId()....