Map Interface এবং তার ইমপ্লিমেন্টেশন

জাভা ইউটিল.প্যাকেজ (Java.util Package) - Java Technologies

353

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 valuekey সমর্থন করে (কেবল একটি 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 ফেরত দেয়।

  • Map Interface ডেটা সংগ্রহের জন্য ব্যবহৃত হয় যেখানে key-value পেয়ার সংরক্ষিত থাকে।
  • HashMap, TreeMap, LinkedHashMap, এবং WeakHashMap ইত্যাদি বিভিন্ন ইমপ্লিমেন্টেশনে এটি ব্যবহার করা হয়, যার প্রতিটি নিজস্ব বৈশিষ্ট্য এবং ব্যবহার ক্ষেত্র রয়েছে।
  • Map Interface আপনি যখন ডেটা স্টোর এবং অনুসন্ধান করতে চান, তখন এটি খুবই উপকারী হতে পারে, বিশেষত যখন আপনি key এর মাধ্যমে দ্রুত value অ্যাক্সেস করতে চান।
Content added By

Map Interface হল Java Collections Framework এর একটি গুরুত্বপূর্ণ অংশ, যা key-value pairs এর আকারে ডেটা সংরক্ষণ করে। Map এর মাধ্যমে আপনি ডেটা সংরক্ষণ এবং দ্রুত অ্যাক্সেস করতে পারেন, যেখানে প্রতিটি কী (key) একটি মান (value) এর সাথে সম্পর্কিত থাকে।

1. Map Interface এর ধারণা

Map একটি collection নয়, বরং এটি key-value pair ধারণ করে, যা Collection ইন্টারফেসের মতো অন্যান্য ইন্টারফেসগুলির সাথে তুলনা করা যেতে পারে। একটি Mapkey এবং value এর মধ্যে সম্পর্ক থাকে, যেখানে প্রতিটি key একক এবং অসামান্য হয়, কিন্তু একাধিক value একই key এর সাথে সম্পর্কিত হতে পারে না। Map ক্লাসটি সাধারণত key-value mapping প্রক্রিয়া পরিচালনা করতে ব্যবহৃত হয়, যেমন Dictionary বা HashMap

Map ইন্টারফেসটি অনেক implementation ক্লাস দ্বারা ইমপ্লিমেন্ট করা হয়, যেমন:

  • HashMap
  • TreeMap
  • LinkedHashMap
  • Hashtable

2. Map Interface এর বৈশিষ্ট্য

Map Interface এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য হল:

  1. Key-Value Pair:
    • একটি Map একটি key-value pair ধারণ করে, যেখানে প্রতিটি key-এর জন্য একটি value থাকে।
    • Key একক হতে হবে এবং কোনো duplicate key থাকতে পারে না।
    • Value পুনরাবৃত্তি হতে পারে (একই মান একাধিক বার উপস্থিত থাকতে পারে)।
  2. No Duplicate Keys:
    • Map এ কোনো দুটি একে অপরকে সমান key থাকতে পারে না। তবে, আপনি বিভিন্ন key এর জন্য আলাদা value রাখতে পারেন।
  3. Ordering of Elements:
    • কিছু Map implementation যেমন LinkedHashMap এবং TreeMap উপাদানগুলিকে ইনসার্ট করার অবস্থান বা প্রাকৃতিক আদেশ অনুযায়ী রাখতে সক্ষম।
    • HashMap উপাদানগুলির মধ্যে কোনো নির্দিষ্ট অর্ডার গ্যারান্টি দেয় না।
  4. Efficient Access:
    • Map এর মধ্যে অ্যাক্সেস কৌশল অত্যন্ত দক্ষ, বিশেষ করে HashMap এর ক্ষেত্রে, যেখানে O(1) সময়ে এলিমেন্ট অ্যাক্সেস করা সম্ভব।
  5. Null Values:
    • বেশিরভাগ Map implementation (যেমন HashMap) null values সমর্থন করে, তবে TreeMap বা Hashtablenull key বা value রাখার অনুমতি নেই।

3. Map Interface এর প্রধান মেথডসমূহ

Map Interface এ কিছু প্রধান মেথড রয়েছে যা key-value pair সম্পর্কিত কার্যাবলী সম্পাদন করতে ব্যবহৃত হয়:

  1. put(K key, V value):

    • এটি একটি key-value pair মানচিত্রে যোগ করে। যদি ঐ key আগেই থাকে, তাহলে পুরানো valueটি নতুন value দ্বারা প্রতিস্থাপিত হয়।
    map.put("apple", 1);
    
  2. get(Object key):

    • এটি নির্দিষ্ট key এর জন্য সংশ্লিষ্ট value প্রদান করে। যদি key পাওয়া না যায়, তবে এটি null রিটার্ন করে।
    map.get("apple");  // Returns 1 if "apple" is present
    
  3. containsKey(Object key):

    • এটি পরীক্ষা করে যে মানচিত্রে নির্দিষ্ট key রয়েছে কিনা। এটি true অথবা false রিটার্ন করে।
    map.containsKey("apple");  // Returns true
    
  4. remove(Object key):

    • এটি একটি নির্দিষ্ট key এবং তার সংশ্লিষ্ট value মুছে ফেলে।
    map.remove("apple");
    
  5. size():

    • এটি মানচিত্রে মোট উপাদান সংখ্যা প্রদান করে।
    map.size();  // Returns number of key-value pairs
    
  6. keySet():

    • এটি সমস্ত key এর একটি Set প্রদান করে।
    Set<K> keys = map.keySet();
    
  7. values():

    • এটি সমস্ত value এর একটি Collection প্রদান করে।
    Collection<V> values = map.values();
    
  8. 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

FeatureHashMapTreeMapLinkedHashMap
OrderingNo order guaranteedSorted by key (natural or comparator)Insertion order is preserved
Null Keys/ValuesAllows null keys and valuesDoes not allow null keysAllows null keys and values
PerformanceFast for random access (O(1))Slower (O(log n) due to sorting)Slightly slower than HashMap (due to linked list)
Use CaseGeneral-purpose use caseSorted map, range queriesWhen 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 নির্বাচন করুন।

Content added By

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 এর পার্থক্য

PropertyHashMapLinkedHashMapTreeMap
OrderingNo guaranteed orderInsertion order or access orderSorted order (natural or custom comparator)
Null Key/ValueAllows one null key and multiple null valuesAllows one null key and multiple null valuesNo 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 orderO(log n) for get/put
Thread-SafetyNot thread-safe (use ConcurrentHashMap for thread safety)Not thread-safe (use ConcurrentHashMap for thread safety)Not thread-safe (use ConcurrentSkipListMap for thread safety)
Memory ConsumptionLess memory overheadSlightly more memory overhead than HashMap due to order maintenanceMore memory overhead due to sorting
Use CaseFast lookups without orderingWhen you need to preserve insertion or access orderWhen you need sorted keys

Use Cases:

  • HashMap: যখন আপনি দ্রুত key-value জোড়ার অ্যাক্সেস করতে চান এবং অর্ডার প্রয়োজন নয়, তখন HashMap ব্যবহার করুন।
  • LinkedHashMap: যখন আপনি ইনসার্শন অর্ডার বা অ্যাক্সেস অর্ডার বজায় রেখে key-value জোড়া সংরক্ষণ করতে চান, তখন LinkedHashMap ব্যবহার করুন।
  • TreeMap: যখন আপনার প্রয়োজন key গুলি ক্রমানুসারে সাজানো এবং sorted order তে এক্সেস করতে, তখন TreeMap ব্যবহার করুন।

  • HashMap একটি দ্রুত এবং কার্যকর unordered collection
  • LinkedHashMap HashMap এর মতো কাজ করে তবে insertion order বা access order ধরে রাখে।
  • TreeMap একটি sorted collection, যেখানে key গুলি natural order অথবা custom comparator অনুযায়ী সাজানো হয়।

প্রতিটি Map ক্লাসের আলাদা ব্যবহার এবং উপকারিতা রয়েছে, এবং আপনার প্রোগ্রামের প্রয়োজন অনুযায়ী সঠিক Map ক্লাস বেছে নেওয়া গুরুত্বপূর্ণ।

Content added By

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

MethodDescriptionExample
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 এর একটি গুরুত্বপূর্ণ অংশ।
Content added By

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 ডেটা স্ট্রাকচারগুলিতে কার্যকরভাবে কাজ করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...