21xrx.com
2024-12-23 00:36:17 Monday
登录
文章检索 我的文章 写文章
我曾经遇到过一个问题
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字符串逗号拼接

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复