CodeGym /Java Blogu /Rastgele /HashMap'te mevcut bir anahtarın değeri nasıl güncellenir?...
John Squirrels
Seviye
San Francisco

HashMap'te mevcut bir anahtarın değeri nasıl güncellenir?

grupta yayınlandı
HashMap'te veya başka herhangi bir Map'te her zaman bir anahtar ve bir değer olduğunu biliyorsunuz . Anahtarın anahtar olarak adlandırılmasının bir nedeni vardır çünkü değerlere anahtarla erişebilirsiniz. Anahtar benzersizdir, ancak değer değildir. Dolayısıyla, değerler çoğaltılabileceği için değere göre bir anahtar elde edemezsiniz. Bu yazıda, Java'da HashMap'te var olan bir anahtarın değerini nasıl güncelleyeceğimizi öğreneceğiz . Java sözdizimini hatırlayalım. Java'daki HashMap şu şekilde bildirilir:

 HashMap<Key, Value> name
Bir örnek alalım. Diyelim ki dört arkadaşımız var ve özellikle onlar için bir HashMap oluşturduk ve isimleriyle doldurduk. Anahtarları tamsayı sayılardır.

Map<Integer, String> names = new HashMap<Integer, String>();
       names.put(1, "Stan");
       names.put(2, "Kyle");
       names.put(3, "Kenny");
       names.put(4, "Cartman");
Not: Haritanızı farklı şekillerde oluşturabilir ve doldurabilirsiniz . Örneğin, başlatma bloğunun kullanılması. İşte burada:

Map<Integer, String> names = new HashMap<Integer, String>() {
           {
               put(1, "Stan");
               put(2, "Kyle");
               put(3, "Kenny");
               put(4, "Cartman");
           }
       };
Veya diğer harita bağımsız değişkeniyle bir yöntemin ve bir HashMap yapıcısının kullanılması . Bu yöntem, sürüm 9 ve sonrasında kullanılabilir.

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
Daha önce de söylediğimiz gibi, HashMap'imizde anahtarlar tamsayı sayılardır ve değerler, bizim durumumuzda karakter adları olan bazı dizeler içerir. Pekala, Kenny'nin başına kötü bir şey geldiğini varsayalım (South Park çizgi dizisini bilen okuyucular, Kenny'nin başına oldukça sık kötü bir şey geldiğini kesin olarak bilirler). Bu yüzden Kenny'yi bu şirketten ( HashMap'imiz ) çıkarmalı ve onun yerine Butters adında başka bir arkadaş koymalıyız. Bu bir güncelleme değeri işlemi olduğu için yapılması çok kolaydır. Kenny oğlumuzun bir anahtarı var == 3 . Kenny'nin bulunduğu key 3'ün değerini değiştirmemiz gerekiyor. Bunu yapmak için put() yöntemini kullanabiliriz :

names.put(3, "Butters");
Bu durumda ekranda haritamızı görüntülersek sonuç aşağıdaki gibi olacaktır:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
Ya Kenny ile ilgili her şey yolundaysa ve onu şirkette tutmak istiyorsak, ancak anahtarını güncellemek için bir nedenimiz varsa? Diyelim ki o artık üç numara değil, beş numara. Anahtar 5 ile Kenny'yi tekrar haritamıza koyalım ve sonucu yazdıralım. Put yöntemini iyi kullanabiliriz . İşte bu örnek için tam kod:

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);
   }
}
Muhtemelen sonucun ne olacağını zaten tahmin etmişsinizdir:

{1=Stan, 2=Kyle, 3=Kenny, 4=Cartman, 5=Kenny}
Bizden beklenen bu muydu? Artık Kenny'nin HashMap'imizde iki anahtarı var . Kesin konuşursak, bunlar iki farklı Kenny, ne demek istiyorsak, çünkü nesnemiz benzersiz bir şekilde anahtar tarafından belirlenir. Bir kişinin pasaportu gibidir, benzersiz olmalıdır. Dolayısıyla, hashmap anahtarını doğrudan eklendikten sonra yeniden adlandıramaz veya güncelleyemezsiniz. Bu işlem basitçe mevcut değildir. Ancak aldatıcı bir manevra yapabilirsiniz: yeni anahtarla yeni bir giriş girin ve eskisini silin. Bu, HashMap kaldırma yöntemi kullanılarak yapılabilir . remove() yalnızca ilişkilendirmeyi kaldırmakla kalmaz, aynı zamanda silinen değeri de döndürür (eğer daha önce varsa). Örneğimizi bu işlemle tamamlayalım:

//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);
   }
}
Şimdi nihayet ihtiyacımız olanı aldık, Kenny'yi bulabileceğimiz anahtarı güncelledik. İşte çıktı:
Kenny {1=Stan, 2=Kyle, 4=Cartman, 5=Kenny}
Tabii ki “eski” Kenny'yi çıkarma ve yenisini ekleme işlemlerini herhangi bir sırayla gerçekleştirebiliriz. Özünde bağımsızdırlar. Veya kodunuzu yalnızca bir satır kullanarak kısaltın:

names.put(5, names.remove(3));
Sonuç kesinlikle aynı olacaktır. Bu nedenle, Java HashMap'te bir anahtarı değiştirmenin tek uygun yolu, girişi silmek ve aynı değeri yeni bir anahtarla eklemektir. Bunu farklı bir şekilde yapabilirsiniz, ancak bir öğe ekleme ve çıkarma konusunda neredeyse aynı hikaye olacaktır.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION