Java树数据
是否有一个好的可用(标准Java)数据结构来表示Java中的树?
具体而言,我需要表示以下内容:
有没有可用的结构或我需要创建自己的(如果这样的实施建议会很好)。
这里:
public class Tree<T> {
private Node<T> root;
public Tree(T rootData) {
root = new Node<T>();
root.data = rootData;
root.children = new ArrayList<Node<T>>();
}
public static class Node<T> {
private T data;
private Node<T> parent;
private List<Node<T>> children;
}
}
这是一个可以用于String
或任何其他对象的基本树结构。 实现简单的树来完成你所需要的事情是相当容易的。
您需要添加的所有方法都是添加,删除,遍历和构造函数的方法。 Node
是Tree
的基本构建块。
又一个树形结构:
public class TreeNode<T> implements Iterable<TreeNode<T>> {
T data;
TreeNode<T> parent;
List<TreeNode<T>> children;
public TreeNode(T data) {
this.data = data;
this.children = new LinkedList<TreeNode<T>>();
}
public TreeNode<T> addChild(T child) {
TreeNode<T> childNode = new TreeNode<T>(child);
childNode.parent = this;
this.children.add(childNode);
return childNode;
}
// other features ...
}
示例用法:
TreeNode<String> root = new TreeNode<String>("root");
{
TreeNode<String> node0 = root.addChild("node0");
TreeNode<String> node1 = root.addChild("node1");
TreeNode<String> node2 = root.addChild("node2");
{
TreeNode<String> node20 = node2.addChild(null);
TreeNode<String> node21 = node2.addChild("node21");
{
TreeNode<String> node210 = node20.addChild("node210");
}
}
}
奖金
请参阅完整的树:
https://github.com/gt4dev/yet-another-tree-structure
实际上在JDK中实现了一个非常好的树结构。
看看javax.swing.tree,TreeModel和TreeNode。 它们被设计为与JTreePanel
一起使用,但实际上它们是一个相当不错的树实现,并且没有任何东西阻止你在没有swing接口的情况下使用它。
请注意,从Java 9开始,您可能不希望使用这些类,因为它们不会出现在“精简配置文件”中。
链接地址: http://www.djcxy.com/p/6785.html上一篇: Java tree data