CodeGym /Java Blog /Toto sisi /如何更新 HashMap 中現有鍵的值
John Squirrels
等級 41
San Francisco

如何更新 HashMap 中現有鍵的值

在 Toto sisi 群組發布
您知道HashMap或任何其他Map中始終有一個鍵和一個值。鍵被稱為鍵是有原因的,因為您可以通過鍵訪問值。鍵是唯一的,但值不是。所以你不能按值獲取鍵,因為值可以重複。在本文中,我們將了解如何在 Java 中更新HashMap中現有鍵的值。讓我們記住 Java 語法。Java 中的HashMap聲明方式如下:

 HashMap<Key, Value> name
讓我們舉個例子。比如說,我們有四個朋友,我們特別為他們創建了一個 HashMap,並用他們的名字填充了一個HashMap。他們的鍵是整數。

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
注意:您可以用不同的方式 創建和填寫您的地圖。例如,使用初始化塊。這裡是:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
或者使用方法HashMap 構造函數與其他映射參數。此方法在版本 9 及更高版本中可用。

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
正如我們之前所說,在我們的HashMap中,鍵是整數,值包含一些字符串,在我們的例子中是字符的名稱。好吧,假設肯尼發生了一些不好的事情(那些了解南方公園卡通系列的讀者肯定知道肯尼經常發生不好的事情)。因此,當它發生時,我們必須將 Kenny 從這家公司(我們的HashMap)中移除,並用另一個朋友代替他,比如說,名字叫 Butters。這很容易做到,因為它是一個更新值操作。我們的肯尼男孩有一把鑰匙 == 3。我們需要更改 Kenny 所在的鍵 3 的值。我們可以使用put()方法來做到這一點:

names.put(3, "Butters");
在這種情況下,如果我們在屏幕上顯示我們的地圖,結果將如下所示:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
如果 Kenny 一切都很好並且我們想讓他留在公司,但我們有理由更新他的密鑰怎麼辦?說吧,他已經不是三號了,而是五號了。讓我們再次使用鍵 5 將 Kenny 放入我們的地圖並打印結果。我們可以很好地使用put方法。下面是這個例子的完整代碼:

import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
       Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
       names.put(5, "Kenny");
       System.out.println(names);
   }
}
您可能已經猜到結果是什麼:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
這是我們的預期嗎?現在 Kenny 在我們的HashMap中有兩個鍵。好吧,嚴格來說,這是兩個不同的 Kenny,無論我們指的是什麼,因為我們的對像是由鍵唯一確定的。它就像一個人的護照,應該是獨一無二的。因此,您不能直接重命名或更新 hashmap 鍵。這個操作根本就不行。但是,您可以採取欺騙手段:使用新密鑰插入新條目並刪除舊條目。這可以使用HashMap 的 remove方法來完成。remove()不僅刪除關聯而且返回刪除的值(如果它之前存在)。讓我們用這個操作來補充我們的例子:

//easy replacement example
import java.util.HashMap;

public class HashMapUpdKey {
   public static void main(String[] args) {
      Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
           
       names.put(5, "Kenny"); //Adding “new” Kenny 
       System.out.println(names.remove(3)); //Update value of the key: Removing “old” Kenny and print out deleted value

       System.out.println(names);
   }
}
現在我們終於得到了我們需要的東西,更新了我們可以找到 Kenny 的密鑰。這是輸出:
肯尼 {1=斯坦,2=凱爾,4=卡特曼,5=肯尼}
當然,我們可以按照任意順序進行刪除“舊”Kenny和添加新Kenny的操作。他們本質上是獨立的。或者僅使用一行來縮短您的代碼:

names.put(5, names.remove(3));
結果肯定是一樣的。因此,在 Java HashMap中更改鍵的唯一正確方法是刪除條目並使用新鍵插入相同的值。你可以用不同的方式來做,但添加和刪除元素幾乎是一樣的。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION