我有一个名为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:错误:字典是抽象的;无法实例化
这可能吗?如果是这样,它看起来怎么样?
答案 0 :(得分:1)
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)来操作它们。