java - 在java中使用递归循环复制树结构数据并创建相同的树结构数据

标签 java

我正在处理数据库中的一张表。这些列是:id、name、parent_id (parent_id 将是表上的一个 id。如果 parent_id 为 null,则该记录是父记录。)

通过递归循环的递归循环复制和创建相同记录的最佳方法是什么,这样我就可以创建相同的树结构:

  • 项目
    • 项目 1
      • 项目 1.1
        • 项目 1.1.1
        • 项目 1.1.2
      • 项目 1.2
    • 项目 2
      • 项目 2.1
        • 项目 2.1.1
      • 项目 2.2
    • 第 3 项

等等,就像第 n 级。

最佳答案

你不需要使用递归,如果你不使用,代码会更清晰。

首先,结果集需要按id排序和 parent_id ,然后您只需使用 java.util.Map 遍历结果集作为索引,像这样:

Map<Object, Item> items = new HashMap<Object, Item>(); 

if (resultSet.next()) 
{
  Item root = createItem(resultSet);
  items.put(root.getId(), root);

  while (resultSet.next()) 
  {
    Item item = createItem(resultSet);
    items.put(item.getId(), item);

    Item parent = items.get(item.getParentId()); 
    if (parent != null) 
    {
      parent.addChild(item);
    }
    else
    {
      ...
    }
  }

  return root;
}
else 
{
  ...
}

关于java - 在java中使用递归循环复制树结构数据并创建相同的树结构数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498193/

相关文章:

java - 如何使用下面的查询恢复产品实体?

java - 使用执行器框架还是普通线程?

java - 加载和显示大文本文件

java - 如何用java程序制作层次结构的Json结构

java - 如何判断Web服务器是否支持Web Services?

java - 由 java.lang.NoClassDefFoundError : com/fasterxml/jackson/databind/Module in spring starter project in IntelIj 引起

java - Spring @RequestParam 和 Controller 接口(interface)

java - 使用JAVA进行循环控制

java - 如何禁用对话框中的 X?

java - 加上或减去我的安卓计算器中的小故障