CodeGym /Java Blog /এলোমেলো /হ্যাশম্যাপে বিদ্যমান কীটির মান কীভাবে আপডেট করবেন
John Squirrels
লেভেল 41
San Francisco

হ্যাশম্যাপে বিদ্যমান কীটির মান কীভাবে আপডেট করবেন

এলোমেলো দলে প্রকাশিত
আপনি জানেন যে হ্যাশম্যাপ বা অন্য কোনও মানচিত্রে সর্বদা একটি কী এবং একটি মান থাকে । কীকে একটি কারণে কী বলা হয় কারণ আপনি কী দ্বারা মানগুলিতে অ্যাক্সেস পান। চাবিটি অনন্য, তবে মানটি নয়। সুতরাং আপনি মান দ্বারা একটি কী পেতে পারবেন না কারণ মানগুলি সদৃশ হতে পারে। এই নিবন্ধে, আমরা জাভাতে হ্যাশম্যাপে বিদ্যমান কী-এর মান কীভাবে আপডেট করব তা খুঁজে বের করতে যাচ্ছি । জাভা সিনট্যাক্স মনে রাখা যাক। জাভাতে হ্যাশম্যাপ পরবর্তী উপায় ঘোষণা করা হয়েছে:

 HashMap<Key, Value> name
একটা উদাহরণ নেওয়া যাক। বলুন, আমাদের চারজন বন্ধু আছে এবং বিশেষ করে তাদের জন্য আমরা তাদের নামের সাথে একটি হ্যাশম্যাপ তৈরি করেছি এবং পূরণ করেছি। তাদের কীগুলি হল পূর্ণসংখ্যা সংখ্যা।

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");
           }
       };
অথবা অন্য মানচিত্র আর্গুমেন্টের সাথে একটি পদ্ধতি এবং একটি হ্যাশম্যাপ কনস্ট্রাক্টর ব্যবহার করে । এই পদ্ধতিটি সংস্করণ 9 এবং পরবর্তী সংস্করণ থেকে উপলব্ধ।

Map<Integer, String> names = new HashMap<>(Map.of(1, "Stan", 2, "Kyle", 3, "Kenny", 4, "Cartman"));
আমরা আগেই বলেছি, আমাদের হ্যাশম্যাপ কীগুলিতে পূর্ণসংখ্যা রয়েছে এবং মানগুলিতে কিছু স্ট্রিং রয়েছে, আমাদের ক্ষেত্রে, অক্ষরের নাম। আচ্ছা, আসুন বলি যে কেনির সাথে খারাপ কিছু ঘটেছে (যারা সাউথ পার্ক কার্টুন সিরিজ জানেন, তারা নিশ্চিতভাবে জানেন যে কেনির সাথে প্রায়শই খারাপ কিছু ঘটেছে)। সুতরাং যখন এটি ঘটে তখন আমাদের কেনিকে এই কোম্পানি থেকে সরিয়ে দিতে হবে (আমাদের হ্যাশম্যাপ ), এবং তাকে অন্য বন্ধুর সাথে প্রতিস্থাপন করতে হবে, বলুন, বাটারস নামে। এটি করা খুবই সহজ কারণ এটি একটি আপডেট মান অপারেশন। আমাদের কেনি ছেলের একটি চাবি আছে == 3 । আমাদের কী 3 এর মান পরিবর্তন করতে হবে, যেখানে কেনি অবস্থিত। আমরা এটি করতে put() পদ্ধতি ব্যবহার করতে পারি:

names.put(3, "Butters");
এই ক্ষেত্রে, আমরা যদি আমাদের মানচিত্রটি স্ক্রিনে প্রদর্শন করি, ফলাফলটি নিম্নরূপ হবে:

{1=Stan, 2=Kyle, 3=Butters, 4=Cartman}
কেনির সাথে সবকিছু ঠিক থাকলে কি হবে এবং আমরা তাকে কোম্পানিতে রাখতে চাই, কিন্তু তার কী আপডেট করার কারণ আছে? বলুন, তিনি আর তিন নম্বর নন, পাঁচ নম্বর। আসুন কেবল 5 কী দিয়ে কেনিকে আবার আমাদের মানচিত্রে রাখি এবং ফলাফলটি মুদ্রণ করি। আমরা পুট পদ্ধতিটি ভালভাবে ব্যবহার করতে পারি। এখানে এই উদাহরণের জন্য সম্পূর্ণ কোড:

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}
আমরা কি এই জন্য প্রত্যাশিত ছিল? এখন কেনির আমাদের হ্যাশম্যাপে দুটি কী রয়েছে । ভাল, কঠোরভাবে বলতে গেলে, এগুলি দুটি ভিন্ন কেনিস, আমরা যাই বলতে চাই না কেন, আমাদের বস্তুটি কী দ্বারা স্বতন্ত্রভাবে নির্ধারিত হয়। এটি একজন ব্যক্তির পাসপোর্টের মতো, এটি অনন্য হওয়া উচিত। তাই আপনি একবার সরাসরি যোগ করার পর হ্যাশম্যাপ কীটির নাম পরিবর্তন বা আপডেট করতে পারবেন না। এই অপারেশন সহজভাবে উপলব্ধ নয়. যাইহোক, আপনি একটি প্রতারণামূলক কৌশল করতে পারেন: নতুন কী দিয়ে একটি নতুন এন্ট্রি ঢোকান এবং পুরানোটি মুছুন। এটি হ্যাশম্যাপ অপসারণ পদ্ধতি ব্যবহার করে করা যেতে পারে । 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