Java 映射:添加到值为列表的值的键

Java 映射:添加到值为列表的值的键,java,Java,所以我有mapg=newlinkedhashmap()其中节点映射到其他节点的列表。这里的想法是我正在创建一个图表 但是,当我向地图(图形)G添加边时,即 我得到一个空指针异常。最让我困惑的是为什么键的值返回null。当我向图中添加一个节点时,即 void addNode(Node v){ G.put(v, new ArrayList<>()); } void addNode(节点v){ G.put(v,newarraylist()); } 这是否不能保证当我想要连接两个

所以我有
mapg=newlinkedhashmap()其中节点映射到其他节点的列表。这里的想法是我正在创建一个图表

但是,当我向地图(图形)G添加边时,即

我得到一个空指针异常。最让我困惑的是为什么键的值返回null。当我向图中添加一个节点时,即

void addNode(Node v){
    G.put(v, new ArrayList<>());
}
void addNode(节点v){
G.put(v,newarraylist());
}
这是否不能保证当我想要连接两个节点时,总是存在一个arraylist作为值

此外,在通过addEdge连接之前,我将添加图形中的所有节点。 这是一段有趣的代码

 for(int i = 0; i < temp.size()-1; i++){
                    G.addEdge(temp.get(i),temp.get(i+1));
for(int i=0;i
} Temp是一个“有序”数组,我在其中存储了需要连接的其他节点,所以1-2,2-3,3-4…等等。。我的测试表明我的temp数组很好,每个元素实际上都是node类的一个实例


编辑-如何制作一个好的哈希代码?我认为键的顺序并不重要?

您能显示完整的代码吗?您的
节点
类似乎没有正确实现
equals
hashCode
方法,如果您想将该类用作任何映射的键,这是必不可少的。
 for(int i = 0; i < temp.size()-1; i++){
                    G.addEdge(temp.get(i),temp.get(i+1));