我有一张映射成本与位置的 map :
Map<Vector<Double>,Double> positionCost=new HashMap<Vector<Double>,Double>();
位置是 double 类型的 vector 。
我将每个职位的成本计算为:
positionCost.put(position, newcost);
现在我有一个 vector ,用于保存所有位置产生的所有成本cost.add(newcost);
。
但有一个问题 - HashMap
的大小不等于成本 vector 的大小。
System.out.println("no of particles"+" "+cost.size()+positionCost.size());
我不明白为什么。
最佳答案
positionCost
的大小Map
不会与成本的大小相同Vector
如果您添加相同的 position
多次键入Map
。在这种情况下,与该键关联的后一个值将覆盖与该键关联的前一个值,并且 Map 的大小将保持不变。
您应该在添加到 map 之前添加一个条件:
if (!positionCost.containsKey(position)) {
positionCost.put(position, newcost);
} else {
// the key already exists in the map. It might be a bug, or it might be
// a valid situation that you have to decide how to handle
}
关于java - 在java hashMap中添加键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26826014/