CodeGym /وبلاگ جاوا /Random-FA /نحوه به روز رسانی مقدار یک کلید موجود در HashMap
John Squirrels
مرحله
San Francisco

نحوه به روز رسانی مقدار یک کلید موجود در HashMap

در گروه منتشر شد
می دانید که همیشه یک کلید و یک مقدار در HashMap یا هر نقشه دیگری وجود دارد . کلید به دلایلی کلید نامیده می شود زیرا شما با کلید به مقادیر دسترسی پیدا می کنید. کلید منحصر به فرد است، اما ارزش آن نیست. بنابراین شما نمی توانید یک کلید بر اساس مقدار دریافت کنید زیرا مقادیر می توانند تکرار شوند. در این مقاله قصد داریم نحوه به روز رسانی مقدار یک کلید موجود در HashMap در جاوا را بیابیم . سینتکس جاوا را به یاد بیاوریم. HashMap در جاوا به روش زیر اعلام می شود:
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 ما اعداد صحیح هستند و مقادیر شامل تعدادی رشته، در مورد ما، نام کاراکترها هستند. خوب، بیایید بگوییم که اتفاق بدی برای کنی رخ داده است (آن دسته از خوانندگانی که مجموعه کارتونی South Park را می شناسند، مطمئناً می دانند که اغلب اوقات اتفاق بدی برای کنی رخ داده است). بنابراین وقتی این اتفاق می‌افتد، باید کنی را از این شرکت ( هش مپ ما ) حذف کنیم و دوست دیگری را جایگزین او کنیم، مثلاً به نام Butters. انجام این کار بسیار آسان است زیرا یک عملیات مقدار به روز رسانی است. پسر کنی ما یک کلید == 3 دارد . باید مقدار کلید 3 را که Kenny در آن قرار دارد تغییر دهیم. برای این کار می توانیم از متد put() استفاده کنیم:
names.put(3, "Butters");
در این صورت، اگر نقشه خود را روی صفحه نمایش دهیم، نتیجه به صورت زیر خواهد بود:
{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
اگر همه چیز با کنی خوب باشد و بخواهیم او را در شرکت نگه داریم، اما دلیلی برای به روز رسانی کلید او داشته باشیم، چه؟ بگو، او دیگر شماره سه نیست، بلکه شماره پنج است. اجازه دهید Kenny را دوباره با کلید 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));
نتیجه مطمئناً یکسان خواهد بود. بنابراین، تنها راه مناسب برای تغییر یک کلید در جاوا هش مپ ، حذف ورودی و درج همان مقدار با یک کلید جدید است. شما می توانید آن را به روش دیگری انجام دهید، اما تقریباً همان داستان اضافه کردن و حذف یک عنصر خواهد بود.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION