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));