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都具有相同的值。我该怎么处理帽子?
答案 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()
。否则,将覆盖相同的节点!