我可以将Dictionary作为另一个类实例的属性吗?

时间:2015-04-20 07:19:41

标签: java object dictionary

我有一个名为Node的类。对于Node的一个实例,我想指定一个字典作为属性来跟踪Node对象的邻居以及将Node连接到每个邻居的路径的权重。

示例:

1-> 2 --- 7(节点1连接到节点2,权重为7)

1-> 3 --- 5(节点1连接到节点3,权重为5)

...

我想创建一个Node对象" 1",它具有一个Dictionary属性,其中(key,value)等于(neighbor,weight)。

在这种情况下,1的词典应该是[2:7,3:5]。

import java.util.Dictionary;

public class Node{

    public int i;
    public Dictionary neighbors = new Dictionary();
    public int w;

    public Node(int i, int j, int weight){
        this.i = i;
        this.neighbors = neighbors.put(j, weight);

    }   
}

当前错误:./ Node.java:6:错误:字典是抽象的;无法实例化

这可能吗?如果是这样,它看起来怎么样?

2 个答案:

答案 0 :(得分:1)

From the docs

  

Dictionary类是任何类的抽象父类,例如Hashtable,它将键映射到值。

     

注意:此类已过时。新实现应该实现Map接口,而不是扩展此类。

使用Map

Map<Node, Integer> neighbors = new HashMap<>();

// ...

neighbors.put(j, weight);

答案 1 :(得分:0)

您无法实例化抽象类。这并不意味着您不能将它作为实例变量的类型。

但是,你需要实现Dictionary的子类,而不是Dictionary本身。

public Dictionary neighbors = new Dictionary();

应该是

public Dictionary neighbors = new DictionarySubClass();

另外:最好将实例变量保密,并使用mutators(getter和setter)来操作它们。