【问题标题】:Generating a tree structure from string list从字符串列表生成树结构
【发布时间】:2021-03-15 02:10:45
【问题描述】:

我有一个格式如下的字符串列表:

"levelone.two.three"
"levelone.two.three.node(0)"
"levelone.two.three.node(1)"
"levelone.another"
"aaa.bbb(0).ccc"
"aaa.bbb(1).aaa"

等等,

我如何以一种可以迭代并从中生成 html 树的方式来操作它?

例如:

  • levelone
    • 两个
        • 节点 0
        • 节点 1
    • 另一个
  • aaa
    • bbb 0
      • ccc
    • bbb 1
      • aaa

【问题讨论】:

    标签: java html string jsp


    【解决方案1】:

    标记你的字符串

    ["levelone", "two", "three"] 等

    然后从左到右尝试在你的树中插入,保持当前树节点插入,从根节点开始。如果给定节点要插入您的节点,则不要执行任何操作,否则将其插入。

    【讨论】:

      【解决方案2】:

      这应该让您清楚地了解如何实现这一目标。

      注意:性能和实际实现,需要自己动手。我只是在这里输入代码

      String[] testData = new String[] { "levelone.two.three", "levelone.two.three.node(0)",
                      "levelone.two.three.node(1)", "levelone.another", "aaa.bbb(0).ccc", "aaa.bbb(1).aaa" };
      
      List<String[]> splitData = new ArrayList<String[]>();
      for (String data : testData) {
          splitData.add(data.split("\\."));
      }
      
      Map<Integer, Set<String>> treeMap = new LinkedHashMap<Integer, Set<String>>();
      
      for (String[] split : splitData) {
           for (int i = 0; i < split.length; i++) {
               if (treeMap.get(i) != null) {
                   treeMap.get(i).add(split[i]);
               } else {
                   Set<String> data = new LinkedHashSet<String>();
                   data.add(split[i]);
                   treeMap.put(i, data);
               }
           }
      }
      System.out.println(treeMap); 
      // {0=[levelone, aaa], 1=[two, another, bbb(0), bbb(1)], 2=[three, ccc, aaa], 3=[node(0), node(1)]}
      

      最终的地图包含每个级别的数据,以它的索引为键

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多