将URL列表转换为树形结构

4

为了确保我没有重复造轮子,我想看看是否有一些已知的算法、类或其他东西可以帮助我解决我的问题。我有一个应用程序生成的大量URL列表。我想将这些URL输入到树中,以创建类似网站地图的数据结构。

似乎以前可能已经做过类似的事情。然而,我从搜索中看到的所有内容似乎都是从xml到tree的转换。理想情况下,我希望得到Java的答案,但如果必要的话,我肯定可以自己翻译它。如果我需要自己做,我可能会将每个URL分成索引。

[root]        [0]  [1]  [1] -file
wwe.site.com/dir1/dir2/file.html
[root]        [0]  [1]  [1]
www.site.com/dirabc/dir2/file.html

因此,我将每个URL解析为偏移量[0]、[1]、[2]...等,并将它们添加到树中的深度中。这至少是我的初步计划。我欢迎任何建议!


你最喜欢的搜索引擎是寻找避免重复造轮子的东西的好地方。你尝试过什么? - gh.
2个回答

2
您可以将您的UrlTree定义为嵌套的HashMap。
public class UrlTree {

  private final Map<String, UrlTree> branches = new HashMap<String, UrlTree>();

  public void add(String[] tokens, int i) {
    if (i >= tokens.length) {
      return;
    }

    final String token = tokens[i];

    UrlTree branch = branches.get(token);

    if (branch == null) {
      branch = new UrlTree();
      branches.put(token, branch);
    }

    branch.add(tokens, i + 1);
  }

  ...
}

1

您需要以反映观察到的目录结构层次的方式实现TreeModelFileTreeModel是一个示例,ac.Name是一个简单的类,用于解析老式文件系统的路径。另请参见如何使用树。NetBeans Outline的一个实例,如此处所示,将成为一个不错的替代视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接