2. 创建递归函数 接下来,我们创建一个递归函数,用于遍历树的节点。该函数的输入参数为当前节点和结果列表。 voidflatten(TreeNoderoot,List<TreeNode>list){if(root==null){return;}// 将当前节点添加到列表中list.add(root);// 递归处理左子节点flatten(root.left,list);// 递归处理右子节点flatten(root.rig...
out.println("使用HashSet实现List去重时间:"+(endTime-startTime)+"毫秒"); startTime = System.currentTimeMillis(); removeDuplicationByTreeSet(list2); endTime = System.currentTimeMillis(); System.out.println("使用TreeSet实现List去重时间:"+(endTime-startTime)+"毫秒"); startTime = System....
统计 45 6101112 13141516171819 202122 Java list 转树tree的三种写法
递归实现,分为两个函数,List<INodeDTO> flatten(List<INodeDTO> flatList)接受外部调用,传入待转换的Tree形结构。第一步便是收集所有的根节点,然后将所有的根节点传入到递归函数List<INodeDTO> flatten(INodeDTO node, List<INodeDTO> flatList中深度遍历,最后汇总再使用distinct做去重处理得到最终的list结构。 /** ...
packagecom.springbootemaildemo.tree.zone;importjava.util.ArrayList;importjava.util.List;publicclassZone { String id; String name; String parentId; List<Zone>children;publicZone(String id, String name, String parentId) {this.id =id;this.name =name;this.parentId =parentId; ...
//循环listMap进行Tree树形结构组装 listMap.forEach(map -> { //获取map的pid Object pid = map.get(parentFieldName);if (pid == null){ //判断pid是否为空,为空说明是最顶级,直接add到返回的treeMap中去 treeMap.add(map);} else { //如果pid不为空 //根据当前map的pid获取上级 parentMap Map...
String collect = list.stream().collect(Collectors.joining(",")); System.out.println("第一种方法:"+collect); //第二种方法,可以用String的join方法来实现该功能 String join = String.join(",", list); System.out.println("第二种方法:"+join); ...
之前写过一个文章 Java递归将List数据转换为Tree结构数据_填坑指南 用的是递归的方法,后来在今日头条上也发布了,评论区以为大佬给了我一些指点(如下图),我看了之后恍然大悟,相对于使用递归,此方法只需写一个方法,方法中两个循环,而使用递归的话,需要写三个方法,还要用递归,使用递归不仅内存开销大,性能也不行。
之前写过一个文章 Java递归将List数据转换为Tree结构数据_填坑指南 用的是递归的方法,后来在今日头条上也发布了,评论区以为大佬给了我一些指点(如下图),我看了之后恍然大悟,相对于使用递归,此方法只需写一个方法,方法中两个循环,而使用递归的话,需要写三个方法,还要用递归,使用递归不仅内存开销大,性能也不行。
2.4 快速创建List常用几种方式 常规操作:new ArrayList<>()创建 代码语言:javascript 代码运行次数:0 运行 AI代码解释 List<Integer>list=newArrayList<>();list.add(1);list.add(2); Arrays工具类创建 构造静态不变的 List: 代码语言:javascript 代码运行次数:0 ...