从字符串列表生成树结构

时间:2014-01-28 10:39:10

标签: java html string jsp

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

"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
    • 2
      • 3
        • node 0
        • 节点1
    • 另一个
  • AAA
    • bbb 0
      • CCC
    • bbb 1
      • AAA

2 个答案:

答案 0 :(得分:2)

对字符串进行标记,以便

[“levelone”,“two”,“three”]等

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

答案 1 :(得分:1)

这应该让你公平地了解如何实现这一目标。

注意:性能和实际实现,你需要自己做。我刚刚在这里输入了代码

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)]}

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