我现在正在从我的教科书中做一个“通用类”练习,尝试使用 HashMap 作为底层结构来实现一个 Graph 数据结构,键是图中的节点,键的值是一个 HashSet与该节点相邻的节点。代码的开头如下所示:
public class Graph <T> {
public HashMap<T, HashSet<T>> foo_graph;
//... Code ...
必须提一下,HashSet 中的键和值必须是同一类型,这就是 T 占位符的原因。写完我所有的方法后,我试图用一个static void main
块来测试它,但是每当我尝试打印 Graph 时,Eclipse 都会不断给我NullPointerExceptions
(它已经给了我一个有效的 ToString 方法):
public static void main(String[] args) {
Graph<Integer> g = new Graph<>();
g.addNode(5, [5,3,7]); //Trying to add 5,3,7 to the HashSet, but Eclipse is saying I can't do this.
System.out.println(g);
}
顺便说一下,这是我的 addNode 方法,我似乎也无法在 Graph 中添加任何内容。
public void addNode(T node_key, HashSet<T> node_value ) {
main_graph.put(node_key, node_value);
Eclipse 在我的静态 void 测试块的 addNode 行告诉我:
The method addNode(Integer, HashSet<Integer>) in the type Graph<Integer> is not applicable for the arguments (int, int, int, int)
有人知道为什么吗?我似乎无法让它工作,我很难过。既不创造