在HashMap中,如果Value重复了,HashMap本身是允许的。HashMap中的每一个键值对都是唯一的,它的值并不考虑重复性。即使你将相同的值放入HashMap中,它也只会存储一次。
然而,如果你需要在插入重复值时执行某些特定操作,例如更新现有条目的值或执行某些业务逻辑,那么你需要在插入之前进行检查。你可以通过获取键值的同时,额外取一个布尔类型的变量isValueExist来实现这一判断。
以下是一个简单的示例代码:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<>();
String key1 = "key1";
int value1 = 10;
String key2 = "key2";
int value2 = 20;
String key3 = "key1"; // 这个键与key1相同
int value3 = 30; // 这个值与value1相同
// 检查键是否存在,如果不存在则插入
if (!hashMap.containsKey(key1)) {
hashMap.put(key1, value1);
} else {
System.out.println("键 " + key1 + " 已存在");
}
// 检查值是否存在,如果不存在则插入
if (!hashMap.containsValue(value1)) {
hashMap.put(key2, value2);
} else {
System.out.println("值 " + value1 + " 已存在");
}
// 尝试插入重复的键和值
if (!hashMap.containsKey(key3)) {
hashMap.put(key3, value3);
} else {
System.out.println("键 " + key3 + " 已存在");
// 在这里执行你需要的操作,例如更新现有条目的值
hashMap.put(key3, value3 * 2); // 将值翻倍
}
System.out.println(hashMap);
}
}
在这个示例中,我们首先尝试插入一个不存在的键值对。然后,我们尝试插入一个已存在的键,但值是不同的。最后,我们尝试插入一个与现有键相同的键,但值是不同的。在插入重复的键时,我们检查键是否存在,如果不存在则插入。在插入重复的值时,我们检查值是否存在,如果不存在则插入。如果值已存在,我们可以选择执行其他操作,例如更新现有条目的值。