HashSet, LinkedHashSet, এবং TreeSet এর ব্যবহার এবং পার্থক্য

Set Interface এবং তার ইমপ্লিমেন্টেশন - জাভা ইউটিল.প্যাকেজ (Java.util Package) - Java Technologies

314

Java.util প্যাকেজে HashSet, LinkedHashSet, এবং TreeSet তিনটি Set ইন্টারফেসের বাস্তবায়ন (implementations) হিসেবে কাজ করে। এগুলি সবই Collection Framework এর অংশ এবং ডুপ্লিকেট আইটেম না রাখার জন্য ব্যবহৃত হয়। তবে, এই তিনটি Set এর মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে, যা তাদের কর্মপদ্ধতি, পারফরম্যান্স এবং ব্যবহারিক ক্ষেত্রে প্রভাব ফেলে।

1. HashSet

HashSet হল Set ইন্টারফেসের একটি বাস্তবায়ন যা Hashing ব্যবহার করে উপাদানগুলোকে সংরক্ষণ করে। এটি কোনও নির্দিষ্ট অর্ডারে উপাদানগুলো সংরক্ষণ করে না এবং এটি ডুপ্লিকেট উপাদান গ্রহণ করে না। HashSet দ্রুত O(1) গতি সহ আইটেম অনুসন্ধান, যোগ করা এবং মুছে ফেলার জন্য সক্ষম, তবে এটি উপাদানগুলিকে কোনো নির্দিষ্ট অর্ডারে রাখে না।

ব্যবহার:

import java.util.HashSet;

public class HashSetExample {
    public static void main(String[] args) {
        HashSet<String> fruits = new HashSet<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // Adding duplicate element
        fruits.add("Apple");

        // Printing the set
        System.out.println("HashSet: " + fruits);
    }
}

Output:

HashSet: [Banana, Apple, Orange]

ব্যাখ্যা:

  • HashSet একটি unordered set যা duplicate values রাখে না। আপনি দেখতে পাবেন যে "Apple" দুটি বার যোগ করার পরও সেটে শুধুমাত্র একটি "Apple" থাকবে।

বিশেষত্ব:

  • Order: HashSet উপাদানগুলোকে unordered ভাবে সংরক্ষণ করে।
  • Performance: O(1) গতি সহ অনুসন্ধান, যোগ করা, মুছে ফেলা।

2. LinkedHashSet

LinkedHashSet হল HashSet এর একটি উন্নত সংস্করণ, যা insertion order (এটি যেখানে যোগ করা হয়েছিল সেই অর্ডারে) অনুসরণ করে। এটি LinkedHashMap ব্যবহার করে যার ফলে এতে order থাকে। যেমন HashSet, এটি ডুপ্লিকেট আইটেম গ্রহণ করে না, তবে এটি উপাদানগুলির অর্ডার বজায় রাখে।

ব্যবহার:

import java.util.LinkedHashSet;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        LinkedHashSet<String> fruits = new LinkedHashSet<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // Adding duplicate element
        fruits.add("Apple");

        // Printing the set
        System.out.println("LinkedHashSet: " + fruits);
    }
}

Output:

LinkedHashSet: [Apple, Banana, Orange]

ব্যাখ্যা:

  • LinkedHashSet উপাদানগুলোকে insertion order অনুসারে রাখে। এটি HashSet এর মতো কাজ করে তবে এতে insertion order বজায় রাখে।

বিশেষত্ব:

  • Order: LinkedHashSet উপাদানগুলোকে insertion order অনুসারে রাখে।
  • Performance: O(1) গতি সহ অনুসন্ধান, যোগ করা, মুছে ফেলা (যেহেতু এটি Hashing ব্যবহার করে), তবে insertion order বজায় রাখতে একটু অতিরিক্ত সময় নেয়।

3. TreeSet

TreeSet হল SortedSet ইন্টারফেসের একটি বাস্তবায়ন, যা উপাদানগুলিকে sorted অবস্থায় রাখে। এটি TreeMap এর ভিত্তিতে কাজ করে এবং উপাদানগুলোকে natural ordering বা একটি নির্দিষ্ট Comparator অনুযায়ী সাজায়। TreeSet ডুপ্লিকেট উপাদান গ্রহণ করে না এবং এটি O(log n) সময়ে সব ধরনের অপারেশন সম্পাদন করে।

ব্যবহার:

import java.util.TreeSet;

public class TreeSetExample {
    public static void main(String[] args) {
        TreeSet<String> fruits = new TreeSet<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // Adding duplicate element
        fruits.add("Apple");

        // Printing the set
        System.out.println("TreeSet: " + fruits);
    }
}

Output:

TreeSet: [Apple, Banana, Orange]

ব্যাখ্যা:

  • TreeSet উপাদানগুলোকে sorted (যেমন alphabetical order বা numerical order) রাখে। এটি Comparator ব্যবহার করে কাস্টম সাজানোরও সুযোগ দেয়।

বিশেষত্ব:

  • Order: TreeSet উপাদানগুলোকে sorted অবস্থায় রাখে, এবং natural ordering বা Comparator অনুযায়ী সাজাতে পারে।
  • Performance: O(log n) সময়ে সমস্ত অপারেশন সম্পাদিত হয়, কারণ এটি binary tree ভিত্তিক।

HashSet, LinkedHashSet, এবং TreeSet এর পার্থক্য

FeatureHashSetLinkedHashSetTreeSet
OrderingNo ordering, unorderedInsertion order maintainedSorted order (natural or custom)
DuplicatesDoes not allow duplicatesDoes not allow duplicatesDoes not allow duplicates
PerformanceO(1) for add, remove, and containsO(1) for add, remove, and containsO(log n) for add, remove, and contains
ImplementationHash table basedHash table + Linked listRed-Black tree based
Null ElementsAllows null valuesAllows null valuesAllows null values (if natural ordering allows)
Use CaseWhen ordering is not requiredWhen insertion order mattersWhen sorted order is required

When to Use Which Set?

  1. HashSet:
    • ব্যবহার করুন যখন অর্ডার গুরুত্বপূর্ণ নয় এবং ডুপ্লিকেট উপাদান না রাখার প্রয়োজন আছে।
    • যেমন: বড় ডেটাসেটে দ্রুত অনুসন্ধান এবং যোগ করা।
  2. LinkedHashSet:
    • ব্যবহার করুন যখন ইনসার্শন অর্ডার বজায় রাখতে হবে।
    • যেমন: ডেটা সংরক্ষণ করতে চান যাতে যেভাবে যুক্ত করা হয়েছিল, সেভাবে বের করা হয় (তবে ডুপ্লিকেট থাকবে না)।
  3. TreeSet:
    • ব্যবহার করুন যখন উপাদানগুলোকে সাজানো রাখতে হবে (প্রাকৃতিকভাবে বা কাস্টম অর্ডারে)।
    • যেমন: একটি ডেটা সেটের উপাদানগুলো সাজানো অবস্থায় থাকতে হবে, যেমন একটি sorted list

  • HashSet, LinkedHashSet, এবং TreeSet হল Set ইন্টারফেসের তিনটি জনপ্রিয় বাস্তবায়ন, যা duplicates বন্ধ করার জন্য ব্যবহৃত হয়।
  • HashSet দ্রুত গতি প্রদান করে, কিন্তু উপাদানগুলো কোনো নির্দিষ্ট অর্ডারে রাখে না।
  • LinkedHashSet ইনসার্শন অর্ডার বজায় রাখে, তবে একটু অতিরিক্ত মেমরি ব্যবহার করে।
  • TreeSet উপাদানগুলোকে সাজানো অবস্থায় রাখে, কিন্তু এর পারফরম্যান্স O(log n) সময় নেয়।

এই তিনটি Set ইন্টারফেসের বাস্তবায়ন তাদের নির্দিষ্ট ব্যবহার ক্ষেত্রে উপযুক্ত এবং আপনার প্রয়োজন অনুযায়ী নির্বাচন করা উচিত।

Content added By
Promotion

Are you sure to start over?

Loading...