為什麼字串類在Java的HashMap中作為鍵很流行?
Map是Java中的一種集合,用於儲存鍵值對。鍵不能為null,每個鍵只能指向一個值。它由java.util包的**Map**介面表示。有各種類實現了這個介面。
HashMap是一個實現了Map介面的類。它基於雜湊表。它允許null值和null鍵。
簡而言之,你可以在HashMap物件中儲存鍵值對。一旦你這樣做,你就可以檢索相應鍵的值,但是,我們用作鍵的值應該是唯一的。
示例
import java.util.HashMap; import java.util.Scanner; public class HashMapExample { public static void main(String args[]) { HashMap<String, Long> map = new HashMap<String, Long>(); System.out.println("Enter the number of records you need to store: "); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for(int i=0; i<num; i++) { System.out.println("Enter key (String): "); String key = sc.next(); System.out.println("Enter value (Long): "); long value = sc.nextLong(); map.put(key, value); } System.out.println("Values Stored . . . . . ."); System.out.println("Enter a name (key): "); String reqKey = sc.next(); System.out.println("Phone number (value): "+map.get(reqKey)); } }
輸出
Enter the number of records you need to store: 3 Enter key (String): Krishna Enter value (Long): 9848022337 Enter key (String): Vishnu Enter value (Long): 9848022338 Enter key (String): Moksha Enter value (Long): 9848022339 Values Stored . . . . . . Enter a name (key): Krishna Phone number (value): 9848022337
字串作為HashMap的鍵
當你建立一個HashMap物件並嘗試向其中儲存鍵值對時,在儲存過程中,會計算給定鍵的雜湊碼,並將它的值放在由鍵的雜湊碼所表示的位置。
當你傳遞鍵來檢索它的值時,會再次計算雜湊碼,並獲取雜湊碼所表示位置的值(如果兩個雜湊碼相等)。
假設我們使用某個變數作為鍵來儲存資料,之後我們修改了這個變數的值。在檢索時,由於我們更改了鍵,當前鍵的雜湊碼將與儲存其值的hashCode不匹配,從而導致檢索失敗。
由於String類是不可變的,一旦建立String,就不能修改它的值。因此,建議使用String變數來儲存雜湊對映中的鍵。
廣告