প্রোগ্রামিং-এ ডেটা টাইপ ব্যবহার করা হয় নির্দিষ্ট ধরণের ডেটা শ্রেণিবদ্ধ করতে। প্রতিটি ডেটা টাইপ আলাদাভাবে সংরক্ষিত হয়, এবং যে ডেটা টাইপ-এ একটি মান সংরক্ষিত থাকে সেটিই নির্ধারণ করে সেই মানের ওপর কী অপারেশন সম्भব।
জাভা-তে কাজ করার সময় আপনি যে একটি ক্লাসের সম্মুখীন হবেন সেটি হলো জাভা HashMap ক্লাস। এই ক্লাসটি কালেকশন ফ্রেমওয়ার্কের অংশ এবং ডেভেলপারদের Map ডেটা টাইপ ব্যবহার করে ডেটা সংরক্ষণ করার সুবিধা দেয়।
জাভা Map এবং HashMap
জাভা Map ইন্টারফেস কী/মান (key/value) জোড়া হিসেবে মান সংরক্ষণ করতে ব্যবহৃত হয়। কীগুলো ইউনিক মান যা একটি নির্দিষ্ট মানের সাথে জড়িত থাকে। জাভা-তে একটি Map ডুপ্লিকেট কী ধারণ করতে পারে না, এবং প্রতিটি কী অবশ্যই একটি নির্দিষ্ট মানের সাথে যুক্ত থাকতে হবে।
Map-র কী/মান কাঠামো আপনাকে কীয়ের ভিত্তিতে মান অ্যাক্সেস করতে সক্ষম করে। উদাহরণস্বরূপ, যদি আপনার কাছে gbp কী এবং United Kingdom মান সহ একটি Map থাকে, তবে gbp কী রেফারেন্স করলে "United Kingdom" মানটি ফেরত দেবে।
HashMap ক্লাস কালেকশন ফ্রেমওয়ার্কের অংশ যা Map ইন্টারফেস এবং হ্যাশ টেবিল ব্যবহার করে ডেটা সংরক্ষণ করার সুবিধা দেয়। হ্যাশ টেবিল হলো কী/মান আইটেম সংরক্ষণের জন্য ব্যবহৃত বিশেষ কালেকশন।
HashMap তৈরি করার আগে আমাদের প্রথমে HashMap প্যাকেজ ইম্পোর্ট করতে হবে। জাভা প্রোগ্রামে এটি করার পদ্ধতি:
import java.util.HashMap;
এখন HashMap প্যাকেজ ইম্পোর্ট করায় আমরা জাভা-তে HashMap তৈরি শুরু করতে পারি।
HashMap তৈরি করা
জাভা-তে HashMap তৈরির সিনট্যাক্স নিম্নরূপ:
HashMap<KeyType, ValueType> map_name = new HashMap<KeyType, ValueType>(capacity, loadFactor);
এটিকে বেসিক কম্পোনেন্টে ভাঙলে:
- HashMap - আমাদের কোডকে বলে যে আমরা একটি HashMap ঘোষণা করছি।
- <KeyType, ValueType> - যথাক্রমে কী এবং মানের ডেটা টাইপ সংরক্ষণ করে।
- map_name - ঘোষিত HashMap-এর নাম।
- new HashMap<KeyType, ValueType> - নির্দিষ্ট ডেটা টাইপের সাথে HashMap আরম্ভ করার নির্দেশ দেয়।
- capacity - কতটি এন্ট্রি সংরক্ষণ করা যাবে বলে। ডিফল্ট ১৬। (ঐচ্ছিক)
- loadFactor - হ্যাশ টেবিল নির্দিষ্ট ক্ষমতা পূর্ণ হলে ডাবল আকারের নতুন টেবিল তৈরি হবে বলে। ডিফল্ট ০.৭৫ (৭৫% ক্ষমতা)। (ঐচ্ছিক)
মান लीজিয়ে আমরা একটি স্থানীয় মুদ্রা বিনিময় ব্যবসার জন্য প্রোগ্রাম তৈরি করছি। তারা দেশের নাম এবং মুদ্রা কোড একসাথে সংরক্ষণ করতে চায়। HashMap এই উদ্দেশ্যে আদর্শ কারণ আমাদের দুটি সংশ্লিষ্ট আইটেম সংরক্ষণ করতে হবে।
এখানে HashMap তৈরির কোড:
import java.util.HashMap;
HashMap<String, String> currencyCodes = new HashMap<String, String>();
এই উদাহরণে currencyCodes নামে একটি HashMap ঘোষণা করা হয়েছে যা দুটি String মান সংরক্ষণ করে। এখন আমরা আইটেম যোগ এবং ম্যানিপুলেট করতে পারি।
আইটেম যোগ করা
HashMap ক্লাস ডেটা সংরক্ষণ এবং ম্যানিপুলেশনের জন্য বিভিন্ন মেথড প্রদান করে। put() মেথড কী/মান কাঠামো ব্যবহার করে HashMap-এ মান যোগ করতে ব্যবহৃত হয়।
মুদ্রা বিনিময় উদাহরণে ফিরি। GBP/United Kingdom এন্ট্রি যোগ করতে চাই। এখানে GBP কী United Kingdom মানের সাথে ম্যাপ করা হয়েছে:
import java.util.HashMap;
class CurrencyExchange {
public static void main(String[] args) {
HashMap<String, String> currencyCodes = new HashMap<String, String>();
currencyCodes.put("GBP", "United Kingdom");
currencyCodes.put("USD", "United States");
System.out.println(currencyCodes);
}
}
আমাদের কোডে currencyCodes HashMap আরম্ভ করা হয়েছে, তারপর put() মেথড ব্যবহার করে এন্ট্রি যোগ করা হয়েছে। আউটপুট:
{GBP=United Kingdom, USD=United States}
আইটেম অ্যাক্সেস করা
HashMap-এ আইটেম অ্যাক্সেস করতে get() মেথড ব্যবহার করা হয়। এটি এক প্যারামিটার গ্রহণ করে: যে মানটি পেতে চান তার কী নাম।
GBP কী-এর সাথে জড়িত দেশের নাম পেতে:
String gbp = currencyCodes.get("GBP");
System.out.println(gbp);
আউটপুট: United Kingdom
আইটেম মুছে ফেলা
remove() মেথড HashMap থেকে একটি আইটেম মুছে ফেলতে ব্যবহৃত হয়। এটি এক প্যারামিটার গ্রহণ করে: যে কী-এর এন্ট্রি মুছতে চান তার নাম।
GBP মুছে ফেলতে:
currencyCodes.remove("GBP");
System.out.println(currencyCodes);
আউটপুট: {USD=United States}
এছাড়া clear() মেথড HashMap থেকে সব আইটেম মুছে ফেলতে ব্যবহৃত হয়। এটি কোনো প্যারামিটার নেয় না:
currencyCodes.clear();
System.out.println(currencyCodes);
আউটপুট: {} (খালি HashMap)
HashMap এলিমেন্ট প্রতিস্থাপন করা
replace() মেথড একটি নির্দিষ্ট কী-এর সাথে জড়িত মানকে নতুন মান দিয়ে প্রতিস্থাপন করতে ব্যবহৃত হয়। এটি দুটি প্যারামিটার নেয়: প্রতিস্থাপন করার কী এবং নতুন মান।
United Kingdom কে Great Britain দিয়ে প্রতিস্থাপন করতে:
currencyCodes.replace("GBP", "Great Britain");
System.out.println(currencyCodes);
আউটপুট: {GBP=Great Britain, USD=United States}
HashMap এর মাধ্যমে ইটারেট করা
জাভা-তে HashMap-এর মাধ্যমে ইটারেট করা সম্ভব। HashMap তিনটি মেথড অফার করে:
keySet()- HashMap-এর কীগুলোতে ইটারেট করতে।values()- HashMap-এর মানগুলোতে ইটারেট করতে।entrySet()- HashMap-এর কী এবং মান উভয়েই ইটারেট করতে।
সবচেয়ে সহজ পদ্ধতি হলো for-each লুপ ব্যবহার করা। currencyCodes HashMap-এর সব মান প্রিন্ট করতে:
import java.util.HashMap;
class CurrencyExchange {
public static void main(String[] args) {
HashMap<String, String> currencyCodes = new HashMap<String, String>();
currencyCodes.put("GBP", "Great Britain");
currencyCodes.put("USD", "United States");
for(String value : currencyCodes.values()) {
System.out.println(value);
}
}
}
আউটপুট:
Great Britain
United States
যদি সব কী প্রিন্ট করতে চান, তবে values() এর বদলে keySet() ব্যবহার করুন:
GBP
USD
উপসংহার
জাভা HashMap ক্লাস কী/মান কালেকশন কাঠামো ব্যবহার করে ডেটা সংরক্ষণ করে। এই কাঠামো তখন উপযোগী যখন দুটি মান একসাথে সংশ্লিষ্ট রাখতে চান।
এই টিউটোরিয়ালে HashMap-এর বেসিকস, HashMap তৈরি করা, এবং সাধারণ HashMap মেথডের উদাহরণ আলোচনা করা হয়েছে। এখন আপনি জাভা HashMap-এ এক্সপার্টের মতো কাজ করার জন্য প্রস্তুত!