在HashMap中,如果Value重復(fù)了,HashMap本身是允許的。HashMap中的每一個(gè)鍵值對(duì)都是唯一的,它的值并不考慮重復(fù)性。即使你將相同的值放入HashMap中,它也只會(huì)存儲(chǔ)一次。
然而,如果你需要在插入重復(fù)值時(shí)執(zhí)行某些特定操作,例如更新現(xiàn)有條目的值或執(zhí)行某些業(yè)務(wù)邏輯,那么你需要在插入之前進(jìn)行檢查。你可以通過(guò)獲取鍵值的同時(shí),額外取一個(gè)布爾類型的變量isValueExist來(lái)實(shí)現(xiàn)這一判斷。
以下是一個(gè)簡(jiǎn)單的示例代碼:
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"; // 這個(gè)鍵與key1相同
int value3 = 30; // 這個(gè)值與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 + " 已存在");
}
// 嘗試插入重復(fù)的鍵和值
if (!hashMap.containsKey(key3)) {
hashMap.put(key3, value3);
} else {
System.out.println("鍵 " + key3 + " 已存在");
// 在這里執(zhí)行你需要的操作,例如更新現(xiàn)有條目的值
hashMap.put(key3, value3 * 2); // 將值翻倍
}
System.out.println(hashMap);
}
}
在這個(gè)示例中,我們首先嘗試插入一個(gè)不存在的鍵值對(duì)。然后,我們嘗試插入一個(gè)已存在的鍵,但值是不同的。最后,我們嘗試插入一個(gè)與現(xiàn)有鍵相同的鍵,但值是不同的。在插入重復(fù)的鍵時(shí),我們檢查鍵是否存在,如果不存在則插入。在插入重復(fù)的值時(shí),我們檢查值是否存在,如果不存在則插入。如果值已存在,我們可以選擇執(zhí)行其他操作,例如更新現(xiàn)有條目的值。