21xrx.com
2025-03-26 20:49:44 Wednesday
文章检索 我的文章 写文章
我曾经遇到过一个问题
2023-06-15 17:29:33 深夜i     --     --
Java List 转换 树形结构 字符串拼接

我曾经遇到过一个问题,需要将一个Java的List数据结构转换成树形结构。经过了一番研究,我终于成功地实现了这个功能,现在我来和大家分享一下这个方法。

首先,我们需要明确一个List数据结构转换成树形结构的基本原理:树形结构是由父子节点组合而成的,而List是平等的元素组合。因此,我们需要针对每个元素找到它的父节点,然后将其插入到相应的子节点中。

为了实现这个功能,我编写了下面的代码:

private static TreeNode convertListToTree(List
  list) {
 
  Map
  map = new HashMap<>(); // 定义一个Map来存储所有元素
 
  for (MyObject obj : list) {
    TreeNode node = new TreeNode(obj.getId(), obj.getName()); // 定义一个节点,并赋值父子关系
    map.put(obj.getId(), node); // 把节点存入Map
    if (obj.getParentId() != null) { // 如果当前节点有父节点,则加入父节点的子节点列表中
      TreeNode parentNode = map.get(obj.getParentId());
      parentNode.addChild(node);
    }
  }
  // 找到根节点
  TreeNode rootNode = null;
  for (Map.Entry
  entry : map.entrySet()) {
 
    TreeNode node = entry.getValue();
    if (node.getParent() == null)
      rootNode = node;
      break;
   
  }
  return rootNode;
}

这个方法的核心思想就是利用Map来存储每个节点,然后再通过遍历List来确定它们之间的父子关系。最后,我们找到没有父节点的节点,也就是根节点,并返回它。

除了将List转换为树形结构,我们还可能需要将一个Java的List转换为一个字符串,其中每个元素之间使用逗号拼接。使用Java 8的Stream API,我们可以轻松地实现这个功能。下面是代码:

List
  list = Arrays.asList("apple", "banana", "cherry");
 
String result = list.stream().collect(Collectors.joining(", ")); // 使用joining()方法拼接元素

这里的核心就是使用Java 8的Stream API,调用collect()方法并传入Collectors.joining(", "),实现元素的拼接。

综上所述,我们可以通过这两种方法,轻松地将Java的List转换为树形结构或字符串,为我们的编程工作带来很大的便利。

【标题】Java List转Tree,String字符串逗号拼接

  
  

评论区