Map Interface Java Collections Framework এর একটি গুরুত্বপূর্ণ অংশ যা key-value পেয়ার ধারণ করে। প্রতিটি key শুধুমাত্র একটি value এর সাথে সম্পর্কিত থাকে এবং প্রতিটি key-ভ্যালু পেয়ার unique হয়। Map এর মূল কাজ হলো key ব্যবহার করে দ্রুত value এর এক্সেস প্রদান করা।
1. Map Interface এর ধারণা
Map একটি Java.util প্যাকেজের ইন্টারফেস যা একটি collection of key-value pairs ধারণ করে। এটি ডেটার দ্রুত অ্যাক্সেস এবং স্টোর করার জন্য ডিজাইন করা হয়েছে। Map ইন্টারফেসটি কোনো উপাদানকে key দ্বারা value এর সাথে যুক্ত করতে সক্ষম এবং এটি duplicate keys অনুমোদন করে না, তবে একই value বিভিন্ন key এর জন্য থাকতে পারে।
Main Features of Map Interface:
- Key-Value Pairs: Map এর মধ্যে ডেটা স্টোর করা হয় key-value pairs হিসেবে। একটি key এর সাথে একটি value যুক্ত থাকে।
- No Duplicate Keys: Map এ কোনো duplicate key থাকতে পারে না, অর্থাৎ প্রতিটি key একক হতে হবে।
- Null Values: একটি Map তে null value থাকতে পারে, তবে কিছু ম্যাপ ইমপ্লিমেন্টেশনে একাধিক null keys থাকতে পারে না।
- Efficient Searching: key দিয়ে খুব দ্রুত value পাওয়া যায়, কারণ Map সাধারণত hashing বা tree structure ব্যবহার করে।
2. Map Interface এর Common Implementations
Map Interface এর বিভিন্ন ইমপ্লিমেন্টেশন রয়েছে, তবে সবচেয়ে বেশি ব্যবহৃত ইমপ্লিমেন্টেশনগুলো হলো HashMap, TreeMap, LinkedHashMap এবং WeakHashMap।
2.1. HashMap
HashMap একটি hash table ভিত্তিক Map ইমপ্লিমেন্টেশন, যা key-value পেয়ার ধারণ করে এবং দ্রুত key-value অ্যাক্সেস প্রদান করে। এটি unordered (অঅর্ডারবিহীন) ডেটা স্টোর করে এবং null value ও key সমর্থন করে (কেবল একটি null key থাকতে পারে)।
Example: HashMap
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// Create a HashMap
Map<String, String> capitals = new HashMap<>();
// Add elements to the HashMap
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Accessing value using key
System.out.println("Capital of USA: " + capitals.get("USA"));
// Display all key-value pairs
for(Map.Entry<String, String> entry : capitals.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
}
}
Output:
Capital of USA: Washington, D.C.
USA -> Washington, D.C.
India -> New Delhi
Japan -> Tokyo
2.2. TreeMap
TreeMap একটি SortedMap ইমপ্লিমেন্টেশন যা keys কে sorted আকারে রাখে (ন্যাচারাল অর্ডার বা Comparator দ্বারা)। এটি Red-Black Tree বা Tree Structure ব্যবহার করে key-value পেয়ার গুলি সংরক্ষণ করে।
Example: TreeMap
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
// Create a TreeMap
Map<String, String> capitals = new TreeMap<>();
// Add elements to the TreeMap
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Display the sorted key-value pairs
for(Map.Entry<String, String> entry : capitals.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
}
}
Output:
India -> New Delhi
Japan -> Tokyo
USA -> Washington, D.C.
2.3. LinkedHashMap
LinkedHashMap হল HashMap এর একটি ইমপ্লিমেন্টেশন যা entry insertion order সংরক্ষণ করে। এটি মূলত hash table এবং linked list এর কম্বিনেশন হিসেবে কাজ করে, যেখানে key-value পেয়ার গুলি ইনসার্ট করা অর্ডারে থাকে।
Example: LinkedHashMap
import java.util.Map;
import java.util.LinkedHashMap;
public class LinkedHashMapExample {
public static void main(String[] args) {
// Create a LinkedHashMap
Map<String, String> capitals = new LinkedHashMap<>();
// Add elements to the LinkedHashMap
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Display elements in insertion order
for(Map.Entry<String, String> entry : capitals.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
}
}
Output:
USA -> Washington, D.C.
India -> New Delhi
Japan -> Tokyo
2.4. WeakHashMap
WeakHashMap হল একটি Map ইমপ্লিমেন্টেশন যেখানে key গুলি weak references দ্বারা সংরক্ষিত থাকে। এর মানে হলো, যদি কোনও key গার্বেজ কালেকশনে চলে যায়, তবে ঐ key-value পেয়ারটি অটোমেটিকালি মুছে যাবে।
Example: WeakHashMap
import java.util.Map;
import java.util.WeakHashMap;
public class WeakHashMapExample {
public static void main(String[] args) {
// Create a WeakHashMap
Map<String, String> capitals = new WeakHashMap<>();
// Add elements to the WeakHashMap
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
// Display elements in WeakHashMap
System.out.println("Capitals Map: " + capitals);
// After GC, the entry will be removed
System.gc(); // Suggest garbage collection
}
}
Output:
Capitals Map: {USA=Washington, D.C., India=New Delhi}
- Note: Garbage collection might remove entries after a while when there are no strong references to the keys.
3. Key Methods in the Map Interface
put(K key, V value): Map-এ একটি key-value পেয়ার যুক্ত করে।get(Object key): একটি key-এর জন্য সংশ্লিষ্ট value ফেরত দেয়।remove(Object key): একটি key-value পেয়ার মুছে ফেলে।containsKey(Object key): কোনো key Map-এ আছে কিনা তা চেক করে।containsValue(Object value): কোনো value Map-এ আছে কিনা তা চেক করে।size(): Map-এর আকার (এতে কতগুলো entry আছে) ফেরত দেয়।isEmpty(): Map খালি কিনা তা চেক করে।keySet(): Map-এর সমস্ত keys ফেরত দেয়।values(): Map-এর সমস্ত values ফেরত দেয়।entrySet(): Map-এর সমস্ত key-value entry ফেরত দেয়।
MapInterface ডেটা সংগ্রহের জন্য ব্যবহৃত হয় যেখানে key-value পেয়ার সংরক্ষিত থাকে।HashMap,TreeMap,LinkedHashMap, এবংWeakHashMapইত্যাদি বিভিন্ন ইমপ্লিমেন্টেশনে এটি ব্যবহার করা হয়, যার প্রতিটি নিজস্ব বৈশিষ্ট্য এবং ব্যবহার ক্ষেত্র রয়েছে।MapInterface আপনি যখন ডেটা স্টোর এবং অনুসন্ধান করতে চান, তখন এটি খুবই উপকারী হতে পারে, বিশেষত যখন আপনি key এর মাধ্যমে দ্রুত value অ্যাক্সেস করতে চান।
Map Interface হল Java Collections Framework এর একটি গুরুত্বপূর্ণ অংশ, যা key-value pairs এর আকারে ডেটা সংরক্ষণ করে। Map এর মাধ্যমে আপনি ডেটা সংরক্ষণ এবং দ্রুত অ্যাক্সেস করতে পারেন, যেখানে প্রতিটি কী (key) একটি মান (value) এর সাথে সম্পর্কিত থাকে।
1. Map Interface এর ধারণা
Map একটি collection নয়, বরং এটি key-value pair ধারণ করে, যা Collection ইন্টারফেসের মতো অন্যান্য ইন্টারফেসগুলির সাথে তুলনা করা যেতে পারে। একটি Map এ key এবং value এর মধ্যে সম্পর্ক থাকে, যেখানে প্রতিটি key একক এবং অসামান্য হয়, কিন্তু একাধিক value একই key এর সাথে সম্পর্কিত হতে পারে না। Map ক্লাসটি সাধারণত key-value mapping প্রক্রিয়া পরিচালনা করতে ব্যবহৃত হয়, যেমন Dictionary বা HashMap।
Map ইন্টারফেসটি অনেক implementation ক্লাস দ্বারা ইমপ্লিমেন্ট করা হয়, যেমন:
- HashMap
- TreeMap
- LinkedHashMap
- Hashtable
2. Map Interface এর বৈশিষ্ট্য
Map Interface এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য হল:
- Key-Value Pair:
- একটি Map একটি key-value pair ধারণ করে, যেখানে প্রতিটি key-এর জন্য একটি value থাকে।
- Key একক হতে হবে এবং কোনো duplicate key থাকতে পারে না।
- Value পুনরাবৃত্তি হতে পারে (একই মান একাধিক বার উপস্থিত থাকতে পারে)।
- No Duplicate Keys:
- Map এ কোনো দুটি একে অপরকে সমান key থাকতে পারে না। তবে, আপনি বিভিন্ন key এর জন্য আলাদা value রাখতে পারেন।
- Ordering of Elements:
- কিছু Map implementation যেমন
LinkedHashMapএবংTreeMapউপাদানগুলিকে ইনসার্ট করার অবস্থান বা প্রাকৃতিক আদেশ অনুযায়ী রাখতে সক্ষম। HashMapউপাদানগুলির মধ্যে কোনো নির্দিষ্ট অর্ডার গ্যারান্টি দেয় না।
- কিছু Map implementation যেমন
- Efficient Access:
- Map এর মধ্যে অ্যাক্সেস কৌশল অত্যন্ত দক্ষ, বিশেষ করে HashMap এর ক্ষেত্রে, যেখানে O(1) সময়ে এলিমেন্ট অ্যাক্সেস করা সম্ভব।
- Null Values:
- বেশিরভাগ Map implementation (যেমন
HashMap) null values সমর্থন করে, তবেTreeMapবাHashtableএ null key বা value রাখার অনুমতি নেই।
- বেশিরভাগ Map implementation (যেমন
3. Map Interface এর প্রধান মেথডসমূহ
Map Interface এ কিছু প্রধান মেথড রয়েছে যা key-value pair সম্পর্কিত কার্যাবলী সম্পাদন করতে ব্যবহৃত হয়:
put(K key, V value):- এটি একটি key-value pair মানচিত্রে যোগ করে। যদি ঐ key আগেই থাকে, তাহলে পুরানো valueটি নতুন value দ্বারা প্রতিস্থাপিত হয়।
map.put("apple", 1);get(Object key):- এটি নির্দিষ্ট key এর জন্য সংশ্লিষ্ট value প্রদান করে। যদি key পাওয়া না যায়, তবে এটি null রিটার্ন করে।
map.get("apple"); // Returns 1 if "apple" is presentcontainsKey(Object key):- এটি পরীক্ষা করে যে মানচিত্রে নির্দিষ্ট key রয়েছে কিনা। এটি true অথবা false রিটার্ন করে।
map.containsKey("apple"); // Returns trueremove(Object key):- এটি একটি নির্দিষ্ট key এবং তার সংশ্লিষ্ট value মুছে ফেলে।
map.remove("apple");size():- এটি মানচিত্রে মোট উপাদান সংখ্যা প্রদান করে।
map.size(); // Returns number of key-value pairskeySet():- এটি সমস্ত key এর একটি Set প্রদান করে।
Set<K> keys = map.keySet();values():- এটি সমস্ত value এর একটি Collection প্রদান করে।
Collection<V> values = map.values();clear():- এটি সমস্ত key-value pair মুছে ফেলে।
map.clear();
4. Map Interface এর Implementation Examples
4.1. HashMap
HashMap হল Map ইন্টারফেসের সবচেয়ে জনপ্রিয় ইমপ্লিমেন্টেশন। এটি hash table এর মাধ্যমে key-value pairs সংরক্ষণ করে এবং null values সমর্থন করে। তবে, এটি order গ্যারান্টি দেয় না।
import java.util.Map;
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// Adding elements
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
// Accessing elements
System.out.println("Value for key 'banana': " + map.get("banana"));
// Removing an element
map.remove("apple");
// Size of the map
System.out.println("Size of map: " + map.size());
// Check if a key exists
System.out.println("Contains key 'cherry': " + map.containsKey("cherry"));
}
}
Output:
Value for key 'banana': 2
Size of map: 2
Contains key 'cherry': true
4.2. TreeMap
TreeMap হল Map ইন্টারফেসের একটি সুনির্দিষ্ট ইমপ্লিমেন্টেশন যা natural ordering বা একটি নির্দিষ্ট comparator এর মাধ্যমে key-value pairs রাখে। এটি sorted থাকে।
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
// Adding elements
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
// Printing the map (sorted by key)
System.out.println(map); // {apple=1, banana=2, cherry=3}
}
}
Output:
{apple=1, banana=2, cherry=3}
4.3. LinkedHashMap
LinkedHashMap হল HashMap এর একটি বিশেষ ইমপ্লিমেন্টেশন যা insertion order বজায় রাখে। এটি Linked List এর মাধ্যমে key-value pairs সংরক্ষণ করে এবং order গ্যারান্টি দেয়।
import java.util.Map;
import java.util.LinkedHashMap;
public class LinkedHashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
// Adding elements
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
// Printing the map (insertion order preserved)
System.out.println(map); // {apple=1, banana=2, cherry=3}
}
}
Output:
{apple=1, banana=2, cherry=3}
5. Differences Between HashMap, TreeMap, and LinkedHashMap
| Feature | HashMap | TreeMap | LinkedHashMap |
|---|---|---|---|
| Ordering | No order guaranteed | Sorted by key (natural or comparator) | Insertion order is preserved |
| Null Keys/Values | Allows null keys and values | Does not allow null keys | Allows null keys and values |
| Performance | Fast for random access (O(1)) | Slower (O(log n) due to sorting) | Slightly slower than HashMap (due to linked list) |
| Use Case | General-purpose use case | Sorted map, range queries | When insertion order matters |
- Map Interface Java Collections Framework এর একটি গুরুত্বপূর্ণ অংশ এবং key-value pairs ধারণ করতে ব্যবহৃত হয়।
- HashMap, TreeMap, এবং LinkedHashMap হল Map ইন্টারফেসের প্রধান ইমপ্লিমেন্টেশন, এবং প্রতিটির পারফরম্যান্স এবং ব্যবহারিক বৈশিষ্ট্য আলাদা।
- HashMap দ্রুত অ্যাক্সেস এবং random access এর জন্য উপযুক্ত, TreeMap অ্যাক্সেসের জন্য sorted order প্রদান করে, এবং LinkedHashMap ইনসার্ট করা অর্ডার বজায় রাখে।
অতএব, Map এর ব্যবহার নির্বাচন করতে হলে আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুযায়ী সঠিক Map implementation নির্বাচন করুন।
Java.util প্যাকেজে Map ইন্টারফেসের বিভিন্ন বাস্তবায়ন রয়েছে, যেগুলোর মধ্যে HashMap, LinkedHashMap, এবং TreeMap অন্যতম। এই ক্লাসগুলির প্রত্যেকটি key-value জোড়ার জন্য মান ধারণ করে, তবে তাদের কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে যা তাদের বিভিন্ন পরিস্থিতিতে ব্যবহার করার সময় প্রভাব ফেলতে পারে।
এখানে আমরা HashMap, LinkedHashMap, এবং TreeMap এর ব্যবহার, বৈশিষ্ট্য, এবং পার্থক্য আলোচনা করব।
1. HashMap
HashMap হলো Map ইন্টারফেসের একটি প্রাথমিক বাস্তবায়ন, যা key-value জোড়া হিসেবে ডেটা সংরক্ষণ করে। এটি অর্ডার গ্যারান্টি দেয় না, অর্থাৎ এতে এলিমেন্টগুলি random order তে থাকবে। এটি null কী এবং null মানের জন্য সমর্থন করে।
ব্যবহার:
HashMapসাধারণত দ্রুত অ্যাক্সেসের জন্য ব্যবহৃত হয়। এটি O(1) সময়ে key-value জোড়ার অনুসন্ধান এবং যোগ করার কাজ করে।- এটি multithreading-এ ব্যবহার করার জন্য থ্রেড-সেফ নয়, তবে
ConcurrentHashMapএর মাধ্যমে থ্রেড-সেফHashMapপাওয়া যায়।
উদাহরণ:
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 15);
map.put("Cherry", 20);
System.out.println("HashMap: " + map);
}
}
Output:
HashMap: {Apple=10, Banana=15, Cherry=20}
বৈশিষ্ট্য:
- Order: এলিমেন্ট গুলির মধ্যে কোনো নির্দিষ্ট অর্ডার থাকে না।
- Duplicates: একই key এর জন্য একাধিক মান রাখা সম্ভব নয়, তবে value ডুপ্লিকেট থাকতে পারে।
- Time Complexity: সাধারণত O(1)।
2. LinkedHashMap
LinkedHashMap হলো HashMap এর একটি বিশেষ সংস্করণ, যা insertion order অথবা access order অনুযায়ী এলিমেন্টগুলি সংরক্ষণ করে। এর মানে, LinkedHashMap এ আপনি যে অর্ডারে এলিমেন্টগুলি যোগ করবেন, সেগুলি ঠিক সেই অর্ডারেই থাকবে।
ব্যবহার:
LinkedHashMapসাধারণত ব্যবহৃত হয় যখন আপনি insertion order বা access order রাখতে চান।- এটি null কী এবং null মানের জন্য সমর্থন করে।
উদাহরণ:
import java.util.LinkedHashMap;
public class LinkedHashMapExample {
public static void main(String[] args) {
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
map.put("Apple", 10);
map.put("Banana", 15);
map.put("Cherry", 20);
System.out.println("LinkedHashMap: " + map);
}
}
Output:
LinkedHashMap: {Apple=10, Banana=15, Cherry=20}
বৈশিষ্ট্য:
- Order: এলিমেন্টগুলি insertion order তে থাকবে (অথবা access order যদি সেট করা হয়)।
- Duplicates: একই key এর জন্য একাধিক মান রাখা সম্ভব নয়, তবে value ডুপ্লিকেট থাকতে পারে।
- Time Complexity: সাধারণত O(1), তবে ইনসার্শন অর্ডার ট্র্যাক করার জন্য অতিরিক্ত খরচ হয়।
3. TreeMap
TreeMap হলো Map ইন্টারফেসের একটি বাস্তবায়ন যা sorted order তে key-value জোড়া সংরক্ষণ করে। এটি Red-Black tree এর মাধ্যমে কাজ করে এবং এটি natural ordering অথবা custom comparator অনুযায়ী এলিমেন্ট গুলি সাজায়। TreeMap কোন null key সমর্থন করে না, তবে null values সমর্থন করে।
ব্যবহার:
TreeMapব্যবহার করা হয় যখন আপনার প্রয়োজন হয় sorted ডেটা সংরক্ষণ করার, বিশেষত যখন আপনাকে key গুলিকে ক্রমানুসারে সাজিয়ে দেখতে হয়।- এটি null key সমর্থন করে না, তবে null value সমর্থন করে।
উদাহরণ:
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>();
map.put("Apple", 10);
map.put("Banana", 15);
map.put("Cherry", 20);
System.out.println("TreeMap: " + map);
}
}
Output:
TreeMap: {Apple=10, Banana=15, Cherry=20}
বৈশিষ্ট্য:
- Order: এলিমেন্টগুলি sorted order তে থাকে (স্বাভাবিক ক্রম বা কম্প্যারেটর অনুযায়ী)।
- Duplicates: একই key এর জন্য একাধিক মান রাখা সম্ভব নয়, তবে value ডুপ্লিকেট থাকতে পারে।
- Time Complexity: O(log n), কারণ এটি একটি Red-Black tree ভিত্তিক ডেটা স্ট্রাকচার।
HashMap, LinkedHashMap, এবং TreeMap এর পার্থক্য
| Property | HashMap | LinkedHashMap | TreeMap |
|---|---|---|---|
| Ordering | No guaranteed order | Insertion order or access order | Sorted order (natural or custom comparator) |
| Null Key/Value | Allows one null key and multiple null values | Allows one null key and multiple null values | No null key allowed, but allows null values |
| Performance (Time Complexity) | O(1) for get/put (average) | O(1) for get/put (average), but slightly slower due to maintaining order | O(log n) for get/put |
| Thread-Safety | Not thread-safe (use ConcurrentHashMap for thread safety) | Not thread-safe (use ConcurrentHashMap for thread safety) | Not thread-safe (use ConcurrentSkipListMap for thread safety) |
| Memory Consumption | Less memory overhead | Slightly more memory overhead than HashMap due to order maintenance | More memory overhead due to sorting |
| Use Case | Fast lookups without ordering | When you need to preserve insertion or access order | When you need sorted keys |
Use Cases:
- HashMap: যখন আপনি দ্রুত key-value জোড়ার অ্যাক্সেস করতে চান এবং অর্ডার প্রয়োজন নয়, তখন
HashMapব্যবহার করুন। - LinkedHashMap: যখন আপনি ইনসার্শন অর্ডার বা অ্যাক্সেস অর্ডার বজায় রেখে key-value জোড়া সংরক্ষণ করতে চান, তখন
LinkedHashMapব্যবহার করুন। - TreeMap: যখন আপনার প্রয়োজন key গুলি ক্রমানুসারে সাজানো এবং sorted order তে এক্সেস করতে, তখন
TreeMapব্যবহার করুন।
HashMapএকটি দ্রুত এবং কার্যকর unordered collection।LinkedHashMapHashMap এর মতো কাজ করে তবে insertion order বা access order ধরে রাখে।TreeMapএকটি sorted collection, যেখানে key গুলি natural order অথবা custom comparator অনুযায়ী সাজানো হয়।
প্রতিটি Map ক্লাসের আলাদা ব্যবহার এবং উপকারিতা রয়েছে, এবং আপনার প্রোগ্রামের প্রয়োজন অনুযায়ী সঠিক Map ক্লাস বেছে নেওয়া গুরুত্বপূর্ণ।
Java.util Package-এর Map ইন্টারফেসটি কীগুলির সাথে মানের সম্পর্ক পরিচালনা করার জন্য ব্যবহৃত হয়। Map এর মধ্যে ডেটা key-value pairs আকারে সংরক্ষিত থাকে, যেখানে প্রতিটি কী (key) শুধুমাত্র একবার উপস্থিত হতে পারে এবং মান (value) যেকোনো ধরনের ডেটা হতে পারে।
এখানে Map ইন্টারফেসের প্রধান কিছু মেথড যেমন put(), get(), remove(), এবং containsKey() নিয়ে আলোচনা করা হবে। এই মেথডগুলি Map ইন্টারফেসের মাধ্যমে কীগুলির সাথে মান সম্পর্কিত বিভিন্ন কার্যাবলী পরিচালনা করতে সাহায্য করে।
1. put() Method
put(K key, V value) মেথডটি Map-এ একটি নতুন কী-মূল্য পেয়ার (key-value pair) যুক্ত করতে ব্যবহৃত হয়। যদি দেওয়া কী ইতোমধ্যেই উপস্থিত থাকে, তবে পুরানো মানটি নতুন মান দ্বারা প্রতিস্থাপিত হবে।
Syntax:
V put(K key, V value);
- K: কী-এর টাইপ।
- V: মান (value)-এর টাইপ।
- Return: যদি কী পূর্বে ছিল, তাহলে পুরানো মান রিটার্ন করে; নতুবা null ফেরত দেয়।
Example:
import java.util.HashMap;
import java.util.Map;
public class MapPutExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
// Adding a new key-value pair
System.out.println("Map after put(): " + map);
// Replacing the value of an existing key
map.put("Apple", 30);
System.out.println("Map after updating Apple: " + map);
}
}
Output:
Map after put(): {Apple=10, Banana=20}
Map after updating Apple: {Apple=30, Banana=20}
Explanation:
put("Apple", 10): এটিAppleকী এর মান ১০ সেট করেছে।put("Apple", 30): এটিAppleকী এর মান আপডেট করেছে।
2. get() Method
get(Object key) মেথডটি Map-এর মধ্যে দেওয়া কী-এর মান ফেরত দেয়। যদি কী পাওয়া না যায়, তবে এটি null ফেরত দেয়।
Syntax:
V get(Object key);
- key: যে কী-এর জন্য মান খুঁজতে হবে।
- Return: যদি কী পাওয়া যায়, তবে মান ফেরত দেয়; নতুবা null ফেরত দেয়।
Example:
import java.util.HashMap;
import java.util.Map;
public class MapGetExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
// Getting value associated with a key
int appleValue = map.get("Apple");
System.out.println("Value associated with Apple: " + appleValue);
// Trying to get a non-existent key
Integer cherryValue = map.get("Cherry");
System.out.println("Value associated with Cherry: " + cherryValue);
}
}
Output:
Value associated with Apple: 10
Value associated with Cherry: null
Explanation:
map.get("Apple"):Appleকী এর সাথে সংযুক্ত মান ১০ ফেরত দেয়।map.get("Cherry"):Cherryকী পাওয়া না গেলে null ফেরত দেয়।
3. remove() Method
remove(Object key) মেথডটি Map থেকে একটি কী-মূল্য পেয়ার মুছে ফেলে এবং যদি কী মুছে ফেলা হয়, তবে সেই মান ফেরত দেয়।
Syntax:
V remove(Object key);
- key: যে কীটি মুছে ফেলতে হবে।
- Return: মুছে ফেলা মান বা null (যদি কী না থাকে)।
Example:
import java.util.HashMap;
import java.util.Map;
public class MapRemoveExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
// Removing a key-value pair
int removedValue = map.remove("Apple");
System.out.println("Removed value: " + removedValue);
System.out.println("Map after remove(): " + map);
// Trying to remove a non-existent key
Integer removedCherry = map.remove("Cherry");
System.out.println("Removed value for Cherry: " + removedCherry);
}
}
Output:
Removed value: 10
Map after remove(): {Banana=20}
Removed value for Cherry: null
Explanation:
map.remove("Apple"): এটিAppleকী-এর সাথে সম্পর্কিত মান ১০ মুছে ফেলেছে এবং ফেরত দিয়েছে।map.remove("Cherry"):Cherryকী না থাকলে null ফেরত দেয়।
4. containsKey() Method
containsKey(Object key) মেথডটি চেক করে যে Map-এ একটি নির্দিষ্ট কী রয়েছে কি না। এটি true ফেরত দেয় যদি কী থাকে এবং false ফেরত দেয় যদি না থাকে।
Syntax:
boolean containsKey(Object key);
- key: যেই কীটি চেক করতে হবে।
- Return:
trueযদি কী থাকে,falseযদি কী না থাকে।
Example:
import java.util.HashMap;
import java.util.Map;
public class MapContainsKeyExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
// Checking if a key exists in the map
boolean hasApple = map.containsKey("Apple");
boolean hasCherry = map.containsKey("Cherry");
System.out.println("Contains Apple: " + hasApple); // true
System.out.println("Contains Cherry: " + hasCherry); // false
}
}
Output:
Contains Apple: true
Contains Cherry: false
Explanation:
map.containsKey("Apple"): এটিtrueফেরত দেয় কারণAppleকী Map-এ উপস্থিত আছে।map.containsKey("Cherry"): এটিfalseফেরত দেয় কারণCherryকী Map-এ নেই।
Summary of Map Methods
| Method | Description | Example |
|---|---|---|
put() | Adds a key-value pair to the map. If the key already exists, updates the value. | map.put("Apple", 10); |
get() | Retrieves the value associated with the specified key. If the key doesn't exist, returns null. | map.get("Apple"); |
remove() | Removes the key-value pair associated with the specified key and returns the value. | map.remove("Apple"); |
containsKey() | Checks if the map contains the specified key. Returns true if the key exists. | map.containsKey("Apple"); |
Mapইন্টারফেস হল key-value pair ডেটা সংরক্ষণের জন্য অত্যন্ত গুরুত্বপূর্ণ। এর মধ্যেput(),get(),remove(), এবংcontainsKey()মেথডগুলি ডেটা অ্যাক্সেস, ম্যানিপুলেশন এবং যাচাই করতে ব্যবহৃত হয়।HashMapবাTreeMapএর মতো বাস্তবায়ন ব্যবহার করে Map ইন্টারফেসের মাধ্যমে key-value pair ডেটা সংরক্ষণ করা যায়, যা Java Collections Framework এর একটি গুরুত্বপূর্ণ অংশ।
Java.util প্যাকেজের Map ইন্টারফেস এবং তার ইমপ্লিমেন্টেশনগুলি key-value pair ভিত্তিক ডেটা ম্যানেজমেন্ট এবং iteration করার জন্য ব্যবহৃত হয়। Map হল একটি অর্ডারড ডেটা স্ট্রাকচার যা একটি কী (key) এর সাথে একটি মান (value) সম্পর্কিত রাখে। Key-Value pairs ব্যবস্থাপনা এবং iteration একাধিকভাবে করা যায়, এবং এর মধ্যে কিছু গুরুত্বপূর্ণ Map ইমপ্লিমেন্টেশন হল HashMap, TreeMap, এবং LinkedHashMap।
এখানে আমরা আলোচনা করব Map ইন্টারফেস এবং তার ক্লাসগুলির মধ্যে কীভাবে key-value pairs পরিচালনা এবং iteration করা হয়।
1. Key-Value Pairs Management with Map
Map ইন্টারফেসটি key-value পেয়ার ধারণ করে এবং এটি বিভিন্ন Map ক্লাসের মাধ্যমে বাস্তবায়িত হয়, যেমন HashMap, TreeMap, LinkedHashMap ইত্যাদি।
Adding Key-Value Pairs
Map এর মাধ্যমে আপনি কী এবং তার সাথে সম্পর্কিত মান যোগ করতে পারেন put() মেথড ব্যবহার করে।
Example: Adding Key-Value Pairs to a HashMap
import java.util.HashMap;
import java.util.Map;
public class KeyValueManagementExample {
public static void main(String[] args) {
// Create a HashMap
Map<String, String> capitals = new HashMap<>();
// Add key-value pairs
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Print the map
System.out.println("Capitals Map: " + capitals);
}
}
Output:
Capitals Map: {USA=Washington, D.C., India=New Delhi, Japan=Tokyo}
ব্যাখ্যা:
put()মেথড ব্যবহার করেkey-valueপেয়ারHashMapএ যোগ করা হয়েছে। এখানে, প্রতিটি দেশকে কী হিসেবে ব্যবহার করা হয়েছে এবং সংশ্লিষ্ট রাজধানীকে মান হিসেবে যোগ করা হয়েছে।
2. Removing Key-Value Pairs
Map থেকে একটি কী-ভিত্তিক মান মুছে ফেলার জন্য remove() মেথড ব্যবহার করা হয়। এটি একটি নির্দিষ্ট কী এবং তার সংশ্লিষ্ট মান মুছে ফেলে।
Example: Removing Key-Value Pair from HashMap
import java.util.HashMap;
import java.util.Map;
public class KeyValueRemovalExample {
public static void main(String[] args) {
// Create a HashMap
Map<String, String> capitals = new HashMap<>();
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Remove a key-value pair
capitals.remove("India");
// Print the map after removal
System.out.println("Capitals Map after removal: " + capitals);
}
}
Output:
Capitals Map after removal: {USA=Washington, D.C., Japan=Tokyo}
ব্যাখ্যা:
remove()মেথড ব্যবহার করে India এর কী এবং সংশ্লিষ্ট মান New Delhi মুছে ফেলা হয়েছে।
3. Iterating Over Key-Value Pairs
Map এর মধ্যে থাকা key-value pairs এর উপর iteration করা অনেক উপায়ে সম্ভব। আপনি Map.Entry ব্যবহার করে অথবা সরাসরি keySet(), values(), বা entrySet() মেথড ব্যবহার করে ইটারেট করতে পারেন।
Example: Iterating Using keySet() and values()
import java.util.HashMap;
import java.util.Map;
public class MapIterationExample {
public static void main(String[] args) {
// Create a HashMap
Map<String, String> capitals = new HashMap<>();
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Iterating over keys using keySet()
System.out.println("Iterating over keys:");
for (String key : capitals.keySet()) {
System.out.println(key);
}
// Iterating over values using values()
System.out.println("\nIterating over values:");
for (String value : capitals.values()) {
System.out.println(value);
}
}
}
Output:
Iterating over keys:
USA
India
Japan
Iterating over values:
Washington, D.C.
New Delhi
Tokyo
ব্যাখ্যা:
keySet(): এটিMapএর মধ্যে থাকা সকল কী প্রদান করে এবং এই কী গুলো দিয়েMapএর উপাদানগুলো অ্যাক্সেস করা যায়।values(): এটি শুধুমাত্র মান (value) প্রদান করে।
4. Iterating Using entrySet() for Both Key and Value
entrySet() মেথডটি Map.Entry অবজেক্ট প্রদান করে, যা একসাথে কী এবং মানের উপর ইটারেট করতে সহায়তা করে।
Example: Iterating Using entrySet()
import java.util.HashMap;
import java.util.Map;
public class MapEntrySetIterationExample {
public static void main(String[] args) {
// Create a HashMap
Map<String, String> capitals = new HashMap<>();
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Iterating over key-value pairs using entrySet()
System.out.println("Iterating over key-value pairs:");
for (Map.Entry<String, String> entry : capitals.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
Output:
Iterating over key-value pairs:
USA: Washington, D.C.
India: New Delhi
Japan: Tokyo
ব্যাখ্যা:
entrySet()মেথডটিMap.Entryইন্টারফেসের অবজেক্ট প্রদান করে, যা কী এবং মান একসাথে অ্যাক্সেস করার সুযোগ দেয়।
5. Checking for Key or Value
আপনি containsKey() এবং containsValue() মেথড ব্যবহার করে চেক করতে পারেন যে একটি নির্দিষ্ট কী বা মান Map-এ রয়েছে কিনা।
Example: Checking for Key and Value
import java.util.HashMap;
import java.util.Map;
public class KeyValueCheckExample {
public static void main(String[] args) {
// Create a HashMap
Map<String, String> capitals = new HashMap<>();
capitals.put("USA", "Washington, D.C.");
capitals.put("India", "New Delhi");
capitals.put("Japan", "Tokyo");
// Check if a key exists
System.out.println("Contains key 'India': " + capitals.containsKey("India"));
// Check if a value exists
System.out.println("Contains value 'Tokyo': " + capitals.containsValue("Tokyo"));
}
}
Output:
Contains key 'India': true
Contains value 'Tokyo': true
ব্যাখ্যা:
containsKey(): এটি চেক করে যে একটি নির্দিষ্ট কী Map-এ আছে কি না।containsValue(): এটি চেক করে যে একটি নির্দিষ্ট মান Map-এ আছে কি না।
Map ইন্টারফেস এবং তার ইমপ্লিমেন্টেশনগুলি (যেমন HashMap, TreeMap, LinkedHashMap) key-value pairs ম্যানেজমেন্টের জন্য শক্তিশালী পদ্ধতি প্রদান করে। আপনি কী-ভ্যালু পেয়ার যোগ করতে, মুছে ফেলতে, এবং বিভিন্ন পদ্ধতিতে ইটারেট করতে পারেন:
put(): কী-ভ্যালু পেয়ার যোগ করার জন্য।remove(): একটি নির্দিষ্ট কী বা উপাদান সরানোর জন্য।keySet(),values(),entrySet(): বিভিন্নভাবে ইটারেশন করার জন্য।containsKey(),containsValue(): কী বা মানের উপস্থিতি চেক করার জন্য।
এগুলি সঠিকভাবে ব্যবহার করে আপনি Map ডেটা স্ট্রাকচারগুলিতে কার্যকরভাবে কাজ করতে পারবেন।
Read more