Java 无法添加到地图

Java 无法添加到地图,java,tree,adjacency-list,Java,Tree,Adjacency List,它似乎在线程main中得到了一个NullPointerException,特别是在我放置节点和调用addEdge方法的行上 private TreeMap<Node, Set<Node>> nodeToNeighbours; 添加类 public void addEdge(Node node1, Node node2) { nodeToNeighbours.put(node2, new TreeSet<Node>()); nodeToNei

它似乎在线程main中得到了一个
NullPointerException
,特别是在我放置节点和调用
addEdge
方法的行上

private TreeMap<Node, Set<Node>> nodeToNeighbours;
添加类

public void addEdge(Node node1, Node node2) {

    nodeToNeighbours.put(node2, new TreeSet<Node>());
    nodeToNeighbours.put(node1, new TreeSet<Node>());
}
public void addEdge(节点node1、节点node2){
nodeToNeights.put(node2,newtreeset());
nodeToNeights.put(node1,newtreeset());
}

您只是在声明地图,而不是在此处初始化它:

private TreeMap<Node, Set<Node>> nodeToNeighbours;
如果您使用的是Java 7或更高版本,则如下所示:

nodeToNeighbours = new TreeMap<>();
nodetoneights=newtreemap();

您只需声明它,而不是初始化它

private TreeMap<Node, Set<Node>> nodeToNeighbours;

你需要初始化
nodetoneights
我真傻。感谢这是不正确的“默认情况下,每个引用都初始化为null”。默认情况下,类属性被初始化为其默认值,对于对象,它为null;对于基本体,它不是。这里的类属性是
nodetoneights
,是
类类型
,这就是为什么它默认为
null
nodeToNeighbours = new TreeMap<>();
private TreeMap<Node, Set<Node>> nodeToNeighbours;
nodeToNeighbours = new TreeMap<Node, Set<Node>>();