Java递归遍历集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java递归遍历集合相关的知识,希望对你有一定的参考价值。

有一张表,里面字段是编号,名称,父编号。生成实体类的时候多加一个集合,集合的内容是这个实体的所有的子集合,要生成这样的一个集合要怎么生成?这个集合的类型还是实体本身,如果还有以这个实体编号为父编号的都要加到子集合那边去!

首先把这张表的所有数据查询出来放到一个集合中(集合为List1),然后遍历这个集合,先根据集合List1中的父编号查询到一个集合 ,这样把list1遍历的对象和根据父编号查询到的集合构建问一个对象放到集合中就可以达到你的目的了,一下为代码说明:

import java.util.List;
public class dto1
private things thing;//当前编号得到的对象
private List list;//父编号查询到的集合
public things getThing()
return thing;

public void setThing(things thing)
this.thing = thing;

public List getList()
return list;

public void setList(List list)
this.list = list;


*********************************************************************************

public class things

private int number;
private String name;
private int parentnumber;
public int getNumber()
return number;

public void setNumber(int number)
this.number = number;

public String getName()
return name;

public void setName(String name)
this.name = name;

public int getParentnumber()
return parentnumber;

public void setParentnumber(int parentnumber)
this.parentnumber = parentnumber;


**************************************************************************

import java.util.ArrayList;
import java.util.List;
public class action

public static void main(String[] args)

List getlist=new ArrayList();
List list=new ArrayList();//list为你根据编号查询出来的集合

for(int i=0;i<list.size();i++)

things thing=(things)list.get(i);

int parentbumber=thing.getParentnumber();//得到父编号
List li=new ArrayList();//此li为根据父编号parentbumber查询到的集合
dto1 dto=new dto1();
dto.setThing(thing);
dto.setList(li);
list.add(dto);//把当前编号的对象和父编号得到的集合构建成一个dto放到最终你要的list中



参考技术A 可用一个类(POJO)setter和getter 放入list中 参考技术B table t1,table t2一张表自我连接查询,存储接勾应该选map,没做过,提供个思路

JS根据子节点递归获取所有父节点的集合

参考技术A //传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id

        function findIdList(data2, id, children = 'children', level = 0) 

  var arrRes = [];

  let obj = 

      id: 0,

      [children]: data2

  

  let rev = (data, id, level) => 

    if (!data || !data[children] || !data[children].length) 

      return;

    

    for (var i = 0; i < data[children].length; i++) 

      let item = data[children][i];

      if (item.id == id) 

        // 将匹配到的结果保存到数组

        arrRes.unshift( level, activeId: item.id );

        // 递归它的父级

        rev(obj, data.id, 0);

        break;

       else if (item[children] && item[children].length > 0) 

        //如果有子集,则把子集作为参数重新执行本方法

        rev(item, id, level + 1);

      

    

  ;

  rev(obj, id, level);

  return arrRes;



let list = [

    id: 1, children: [

        id: 11, children: [id: 12]

    ],

    id: 2, children: [id:21, children: [id: 31]]

]

let b = findIdList(list, 21)

console.log(b) // [  level: 0, activeId: 2 ,  level: 1, activeId: 21  ]

以上是关于Java递归遍历集合的主要内容,如果未能解决你的问题,请参考以下文章

使用java递归方法遍历指定目录下所有子目录和子文件

Java实现二叉树的创建递归/非递归遍历

遍历二叉树 非递归 JAVA 实现

基于Java的二叉树的三种遍历方式的递归与非递归实现

Java数据结构——二叉树的递归与非递归遍历(DFS)

树的递归遍历