CodeGym /בלוג Java /Random-HE /כיצד לעדכן את הערך של מפתח קיים ב-HashMap
John Squirrels
רָמָה
San Francisco

כיצד לעדכן את הערך של מפתח קיים ב-HashMap

פורסם בקבוצה
אתה יודע שתמיד יש מפתח וערך ב- HashMap או בכל מפה אחרת . מפתח נקרא מפתח מסיבה כלשהי מכיוון שאתה מקבל גישה לערכים על ידי המפתח. המפתח הוא ייחודי, אבל הערך לא. אז אתה לא יכול לקבל מפתח לפי ערך מכיוון שניתן לשכפל ערכים. במאמר זה, אנו הולכים לגלות כיצד לעדכן את הערך של מפתח קיים ב- HashMap ב-Java. בואו נזכור את תחביר ג'אווה. HashMap ב-Java מוכרז בדרך הבאה:
HashMap<Key, Value> name
בואו ניקח דוגמה. נגיד, יש לנו ארבעה חברים ובמיוחד עבורם יצרנו ומילאנו 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 שלנו הם מספרים שלמים, והערכים מכילים כמה מחרוזות, במקרה שלנו, שמות של תווים. ובכן, נניח שמשהו רע קרה לקני (אותם קוראים שמכירים את הסדרה המצוירת של סאות'פארק, יודעים בוודאות שמשהו רע קרה לקני לעתים קרובות למדי). אז כשזה קורה אנחנו צריכים להסיר את קני מהחברה הזו ( HashMap שלנו ), ולהחליף אותו עם חבר אחר, נגיד, בשם Butters. קל מאוד לעשות זאת מכיוון שזו פעולת עדכון ערך. לילד הקני שלנו יש מפתח == 3 . אנחנו צריכים לשנות את הערך של מפתח 3, שבו קני נמצא. אנו יכולים להשתמש בשיטת put() כדי לעשות זאת:
names.put(3, "Butters");
במקרה זה, אם נציג את המפה שלנו על המסך, התוצאה תהיה כדלקמן:
{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
מה אם הכל בסדר עם קני ואנחנו רוצים להשאיר אותו בחברה, אבל יש לנו סיבה לעדכן את המפתח שלו? תגיד, הוא כבר לא מספר שלוש, אלא מספר חמש. בואו פשוט נכניס שוב את קני למפה שלנו עם מקש 5 ונדפיס את התוצאה. אנחנו יכולים להשתמש היטב בשיטת ה-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}
בשביל זה ציפו לנו? כעת לקני יש שני מפתחות ב- HashMap שלנו . ובכן, למהדרין, אלו שני קניים שונים, לא משנה מה אנחנו מתכוונים, מכיוון שהאובייקט שלנו נקבע באופן ייחודי על ידי המפתח. זה כמו דרכון של אדם, זה צריך להיות ייחודי. אז אתה לא יכול פשוט לשנות את השם או לעדכן את מפתח ה-hashmap ברגע שנוסף ישירות. הפעולה הזו פשוט לא זמינה. עם זאת, אתה יכול לבצע תמרון מטעה: הכנס ערך חדש עם המפתח החדש ומחק את הישן. ניתן לעשות זאת באמצעות שיטת הסרת HashMap . 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);
   }
}
עכשיו סוף סוף השגנו את מה שהיינו צריכים, עדכנו את המפתח שבאמצעותו נוכל למצוא את קני. הנה הפלט:
קני {1=סטן, 2=קייל, 4=קרטמן, 5=קני}
כמובן שאנו יכולים לבצע את פעולות הסרת הקני ה"ישן" והוספת חדש בכל סדר. הם עצמאיים בעצם. או קצר את הקוד שלך באמצעות שורה אחת בלבד:
names.put(5, names.remove(3));
התוצאה תהיה זהה בוודאות. לכן, הדרך הנכונה היחידה לשנות מפתח ב-Java HashMap היא למחוק את הערך ולהכניס את אותו ערך עם מפתח חדש. אתה יכול לעשות את זה בצורה אחרת אבל זה יהיה כמעט אותו סיפור לגבי הוספה והסרה של אלמנט.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION