Java 访问作为值存储在HashMap中的节点
我的节点具有节点列表(作为子节点)。Java 访问作为值存储在HashMap中的节点,java,collections,tree,Java,Collections,Tree,我的节点具有节点列表(作为子节点)。 ref.get(L.get(t)).children.add(N) L.get(t)正在给我的父节点赋值ref.get(L.get(t))是我想使用的另一个节点。 我想将我的新节点N添加到ref.get(L.get(t))的子节点。调试时,我可以在ref.get(L.get(t))中看到一个节点,但抛出NullPointerException public void CreateNode(Node m,ArrayList<Node> S,Hash
ref.get(L.get(t)).children.add(N)代码>
L.get(t)
正在给我的父节点赋值ref.get(L.get(t))
是我想使用的另一个节点。
我想将我的新节点N
添加到ref.get(L.get(t))
的子节点。调试时,我可以在ref.get(L.get(t))
中看到一个节点,但抛出NullPointerException
public void CreateNode(Node m,ArrayList<Node> S,HashMap<Node,Node> ref,ArrayList<String> L) {
Node N = new Node(m.val,m.data);
ref.put(m,N);
if(S.isEmpty()) {
S.add(N);
} else {
Node c =ref.get(L.get(t)); //Showing C as null
ref.get(L.get(t)).children.add(N); //unable to access node in ref.get(L.get(t))
System.out.println(ref.get(L.get(t)).val);
S.add(N);
t++;
}
}
public void CreateNode(节点m,ArrayList S,HashMap ref,ArrayList L){
节点N=新节点(m.val,m.data);
参考放置(m,N);
如果(S.isEmpty()){
S.add(N);
}否则{
节点c=ref.get(L.get(t));//将c显示为null
ref.get(L.get(t)).children.add(N);//无法访问ref.get(L.get(t))中的节点
System.out.println(ref.get(L.get(t)).val);
S.add(N);
t++;
}
}
关于您的方法签名,L是一个字符串列表
,因此L.get(int)将返回一个字符串
。另一方面,refMap
的键是节点
对象,因此使用字符串
进行查找将返回空值。
因此,可以重构ref映射以获得节点的唯一字符串标识符,也可以通过节点对象进行查找。请使用有意义的变量/参数名称。您没有访问映射的键集。。。你不能用这种方式得到任何钥匙。您的代码看起来像Java中实现的C#命名约定。。。