HashSet এবং TreeSet উভয়ই কালেকশন ফ্রেমওয়ার্কের অংশ। HashSet, Set ইন্টারফেসের ইমপ্লিমেন্টেশন, TreeSet, SortedSet ইমপ্লিমেন্ট করে। TreeSet TreeMap দ্বারা ব্যাকড, HashSet HashMap দ্বারা ব্যাকড।
TreeSet এবং HashSet-এর তুলনা
| ক্রমিক নং | বিষয় | HashSet | TreeSet |
|---|---|---|---|
| ১ | ইমপ্লিমেন্টেশন | HashTable ব্যবহার করে ইমপ্লিমেন্টেড (আধুনিক ভার্সনে HashMap) | ট্রি স্ট্রাকচার (Red-Black Tree) ব্যবহার করে |
| ২ | নাল অবজেক্ট | নাল অবজেক্ট অনুমতি দেয় | নাল অবজেক্ট অনুমতি দেয় না, NullPointerException নিক্ষেপ করে |
| ৩ | মেথড | দুটি অবজেক্ট তুলনার জন্য equals() মেথড ব্যবহার করে | দুটি অবজেক্ট তুলনার জন্য compareTo()/compare() মেথড ব্যবহার করে |
| ৪ | হেটেরোজিনাস অবজেক্ট | হেটেরোজিনাস অবজেক্ট অনুমতি দেয় না (টাইপ সেফটি) | হেটেরোজিনাস অবজেক্ট অনুমতি দেয় (যদি কমপ্যাবল হয়) |
| ৫ | অর্ডারিং | কোনো অর্ডার মেনে চলে না | অবজেক্ট সর্টেড অর্ডারে রাখে |
TreeSet উদাহরণ
class TreeSetExample {
public static void main(String[] args) {
TreeSet<String> treeset = new TreeSet<>();
treeset.add("Good");
treeset.add("For");
treeset.add("Health");
treeset.add("Good"); // ডুপ্লিকেট
System.out.println("TreeSet: ");
for (String temp : treeset) {
System.out.println(temp);
}
}
}
আউটপুট
TreeSet:
For
Good
Health
HashSet উদাহরণ
class HashSetExample {
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<>();
hashSet.add("Good");
hashSet.add("For");
hashSet.add("Health");
hashSet.add("Good"); // ডুপ্লিকেট
System.out.println("HashSet: ");
for (String temp : hashSet) {
System.out.println(temp);
}
}
}
আউটপুট
HashSet:
Health
For
Good
পারফরম্যান্স ও ব্যবহার
- HashSet: O(1) এড/রিমুভ/কন্টেইনস, অর্ডার দরকার নেই
- TreeSet: O(log n) এড/রিমুভ/কন্টেইনস, সর্টেড অর্ডার দরকার হলে
- LinkedHashSet: ইনসারশন অর্ডার মেনে চলে, HashSet-এর মতো পারফরম্যান্স