java - 在java hashMap中添加键值对

标签 java hashmap

我有一张映射成本与位置的 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/

相关文章:

java - 访问 ASM Java 库中的局部变量

Java HashMap 为什么返回 null?

rust - 无法使用 insert() 方法

java - 使用键映射到一系列值。字母等级与考试成绩示例

java - 如何限制cookie中的某些子域?

java - Java读取Excel文件(Simple JSP and Servlet)

java - 如何将第一个数字 (0) 映射为数组中的 Int?

java - 如何防止 Java Swing 中的工具栏按钮焦点?

java - 如果 HashMap 被构造并且 "filled"作为 LinkedHashMap,它是否会在下一次读取时保留其元素的顺序?

c++ - 多个线程在 C++ 中访问 std::map