通用树和通用节点Java

时间:2012-06-25 05:37:17

标签: java generics

我想实现一个通用的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类?

基本上,我想了解在创建类型通用的类时要遵循的原则,而这些类通常是通用的。

感谢。

1 个答案:

答案 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) 
       {
             // ...
       } 
    }

我不确定我是否明白你的意思,从问题中你的需求是什么并不是很清楚,所以如果这是毫无意义的或者不完全是你所需要的,请在向我推荐之前让我知道(:

问候。