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)将返回一个
字符串
。另一方面,ref
Map
的键是
节点
对象,因此使用
字符串
进行查找将返回空值。
因此,可以重构ref映射以获得节点的唯一字符串标识符,也可以通过节点对象进行查找。

请使用有意义的变量/参数名称。您没有访问
映射的
键集
。。。你不能用这种方式得到任何钥匙。您的代码看起来像Java中实现的C#命名约定。。。