HashSet এবং TreeSet হল Java Collections Framework এর দুইটি জনপ্রিয় Set ইন্টারফেসের বাস্তবায়ন। উভয়ের মধ্যে মূল পার্থক্য হল, HashSet এলিমেন্টগুলিকে যেভাবে আসে তেমনভাবে রাখে, অর্থাৎ কোন নির্দিষ্ট অর্ডারে রাখে না, তবে TreeSet এলিমেন্টগুলিকে স্বাভাবিক ক্রম (natural order) বা আপনার দেওয়া কাস্টম কম্প্যারেটরের ভিত্তিতে সাজায়।
1. HashSet Example (Unique Elements এর সংগ্রহ)
HashSet একটি সেট যা ডুপ্লিকেট এলিমেন্ট সমর্থন করে না এবং এলিমেন্টগুলোকে কোন নির্দিষ্ট অর্ডারে রাখে না।
উদাহরণ: HashSet (Unique Elements)
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
// HashSet তৈরি করা
HashSet<String> set = new HashSet<>();
// HashSet এ কিছু এলিমেন্ট যোগ করা
set.add("Apple");
set.add("Banana");
set.add("Orange");
set.add("Apple"); // Duplicate element, this will be ignored
// HashSet এর এলিমেন্ট প্রিন্ট করা
System.out.println("HashSet Elements: " + set);
}
}
আউটপুট:
HashSet Elements: [Apple, Banana, Orange]
ব্যাখ্যা:
set.add("Apple");: প্রথমবারAppleযোগ করা হবে, কিন্তু পরবর্তীবার ডুপ্লিকেট হিসেবে যোগ হওয়াAppleউপেক্ষা করা হবে।- HashSet ডুপ্লিকেট এলিমেন্টগুলি অস্বীকার করে এবং এলিমেন্টগুলির মধ্যে কোনো নির্দিষ্ট অর্ডার বজায় রাখে না। এটি এলিমেন্টগুলি এলোমেলোভাবে প্রিন্ট করে।
2. TreeSet Example (Sorted Collection)
TreeSet একটি Sorted Set যা ইনপুট এলিমেন্টগুলিকে প্রাক-নির্ধারিত ক্রমে সাজিয়ে রাখে (যেমন অ্যাসেন্ডিং বা ডেসেন্ডিং অর্ডার)। এটি Natural Ordering বা কাস্টম Comparator ব্যবহার করে সাজানো হয়।
উদাহরণ: TreeSet (Sorted Collection)
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
// TreeSet তৈরি করা
TreeSet<String> set = new TreeSet<>();
// TreeSet এ কিছু এলিমেন্ট যোগ করা
set.add("Banana");
set.add("Apple");
set.add("Orange");
set.add("Mango");
// TreeSet এর এলিমেন্ট প্রিন্ট করা
System.out.println("TreeSet Elements: " + set);
}
}
আউটপুট:
TreeSet Elements: [Apple, Banana, Mango, Orange]
ব্যাখ্যা:
- TreeSet এলিমেন্টগুলোকে তাদের প্রাক-নির্ধারিত অর্ডার (এ্যাসেন্ডিং অর্ডারে) সাজিয়ে রাখে।
- এখানে,
Apple,Banana,Mango,Orangeসোজা অর্ডারে সাজানো হয়েছে।
3. TreeSet এবং HashSet এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | HashSet | TreeSet |
|---|---|---|
| অর্ডারিং | কোন নির্দিষ্ট অর্ডার নেই | প্রাক-নির্ধারিত ক্রম (Ascending Order) |
| ডুপ্লিকেট এলিমেন্ট | ডুপ্লিকেট এলিমেন্ট রাখা হয় না | ডুপ্লিকেট এলিমেন্ট রাখা হয় না |
| পারফরম্যান্স | তীব্র পারফরম্যান্স (অর্ডার করার জন্য সময় লাগে না) | একটু ধীর, কারণ এটি সজ্জিত থাকতে হয় |
| ইনটারফেস | Set ইনটারফেসের বাস্তবায়ন | NavigableSet ইনটারফেসের বাস্তবায়ন |
4. TreeSet এবং HashSet এর সুবিধা এবং ব্যবহার:
- HashSet:
- ফাস্ট অপারেশন: যদি আপনাকে শুধু ইউনিক এলিমেন্ট রাখতে হয় এবং অর্ডার খুব গুরুত্বপূর্ণ না হয়, তবে HashSet বেশ কার্যকর।
- ডুপ্লিকেট হ্যান্ডলিং: এটি ডুপ্লিকেট এলিমেন্টগুলিকে সরিয়ে ফেলতে সহায়তা করে।
- TreeSet:
- Sorted Collection: যদি আপনার এলিমেন্টগুলিকে সাজানো অবস্থায় প্রয়োজন হয় (যেমন, সর্বনিম্ন থেকে সর্বোচ্চ), তবে TreeSet ব্যবহার করুন।
- NavigableSet: এটি
lower(),higher(),pollFirst(),pollLast()ইত্যাদি সুবিধা প্রদান করে, যা নির্দিষ্ট এলিমেন্টের আগে বা পরে থাকা এলিমেন্ট পাওয়ার জন্য উপযোগী।
- HashSet হল একটি দ্রুত এবং অর্ডারহীন সংগ্রহ যা ডুপ্লিকেট এলিমেন্টকে প্রতিরোধ করে।
- TreeSet হল একটি সজ্জিত সংগ্রহ যা ইনপুট এলিমেন্টগুলিকে সন্নিবেশকালে সাজিয়ে রাখে, এবং এটি অ্যাসেন্ডিং অর্ডারে এলিমেন্ট প্রদান করে।
এই দুইটি Set-এর মধ্যে আপনি আপনার প্রয়োজনে নির্বাচন করতে পারেন: যদি অর্ডার গুরুত্বপূর্ণ না হয় তবে HashSet, আর যদি অর্ডার গুরুত্বপূর্ণ হয় তবে TreeSet ব্যবহার করা যেতে পারে।
Read more