我想实现一个通用的TreeNode和一个Generic Tree。我在stackoverflow和其他地方看到了一些例子,但完全无法理解。
public interface Node<K, V>
{
K getId();
V getData();
K getParentId();
void addChild(Node<K, V> child);
List<Node<K, V>> getChildren();
}
public class Tree<K, V>
{
private Node<K, V> root;
public void loadData(Map<K, V> data)
{
// by figuring out the root node from map, populate tree
// root node is the one with parentId as null
// and the logic follows. Simple level order insertion
}
}
虽然上面的代码服务于我的目的,但我想了解是否有更好的方法来实现这一点。
将声明树声称为
public class Tree<T extends Node<?, ?>
{
private T root;
public void loadData(Map<K, V> data)
{
// by figuring out the root node from map, populate tree
// root node is the one with parentId as null
// and the logic follows. Simple level order insertion
}
}
在上面的例子中,我的数据加载方法应该驻留在哪里?一些Util类?
基本上,我想了解在创建类型通用的类时要遵循的原则,而这些类通常是通用的。
感谢。
答案 0 :(得分:0)
如果你需要孔树类型泛型,这是我能想出的唯一选择:
public class Tree<K extends Object, V extends Object, T extends Node<K, V>>
{
private T root;
public void loadData(Map<K, V> data)
{
// ...
}
}
我不确定我是否明白你的意思,从问题中你的需求是什么并不是很清楚,所以如果这是毫无意义的或者不完全是你所需要的,请在向我推荐之前让我知道(:/ p>
问候。