列表的每个元素都具有相同的元素外部函数。

时间:2016-10-13 23:00:56

标签: java list arraylist null

 svm_node n=new svm_node();
for (String tk:instance.keySet()){
            System.out.println(tk + " "+ instance.get(tk));
            if(IndexDic.containsKey(tk)){

            n.index=(IndexDic.get(tk));
            n.value=instance.get(tk);
            nodes.add(n);
            }
        else{
            System.out.println("does not contain"+tk);
        }
        }

我有上面的代码。在我将节点值输出到控制台或使用调试器检查后,所有元素都具有相同的值。也就是说,节点中的所有n都具有相同的值。我该怎么处理帽子?

2 个答案:

答案 0 :(得分:1)

您一遍又一遍地将相同的svm_node对象添加到集合中。要解决此问题,请将svm_node的实例化移动到循环内部:

for (String tk:instance.keySet()) {
    svm_node n=new svm_node();
    System.out.println(tk + " "+ instance.get(tk));

    if (IndexDic.containsKey(tk)) {
        n.index = (IndexDic.get(tk));
        n.value = instance.get(tk);
        nodes.add(n);
    }
    else {
        System.out.println("does not contain"+tk);
    }
}

答案 1 :(得分:0)

您应该在for-Loop中调用svm_node n = new svm_node()。否则,将覆盖相同的节点!