تری ست (TreeSet)
«تری ست (TreeSet)» مجموعه ای از اعضای یکتا است که همیشه مرتب می ماند. مثل لیست نمره ها که از کوچکتر به بزرگتر چیده می شود. این کلاس در بسته java.util است و «رابط (Set)» را پیاده سازی می کند.
ساخت TreeSet
«رابط (Interface)» یعنی قرارداد رفتار. TreeSet طبق قرارداد Set کار می کند و مرتب می سازد.
import java.util.TreeSet; // Import the TreeSet class
TreeSet<String> cars = new TreeSet<>();
افزودن عضو؛ مرتب سازی خودکار
با «add()» عضو اضافه کن. تکراری ها فقط یک بار می مانند. خروجی همیشه مرتب است.
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<String> cars = new TreeSet<>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("BMW"); // Duplicate
cars.add("Mazda");
System.out.println(cars);
}
}
نکته: عناصر به صورت خودکار مرتب می شوند. مقدار تکراری فقط یک بار دیده می شود.
بررسی وجود عضو
برای پرسیدن «هست یا نه؟»، از «contains()» استفاده کن. مثل جست وجوی نام در لیست.
cars.contains("Mazda");
حذف یک عضو و پاک سازی کامل
برای حذف از «remove()» و برای خالی کردن از «clear()» استفاده کن.
cars.remove("Volvo");
cars.clear();
تعداد اعضا
با «size()» تعداد اعضای یکتا را می بینی. تکراری ها شمارش نمی شوند.
cars.size();
حلقه foreach روی TreeSet
با for-each از روی عناصر مرتب عبور کن. خروجی ترتیب طبیعی دارد.
TreeSet<String> cars = new TreeSet<>();
// add elements...
for (String i : cars) {
System.out.println(i);
}
TreeSet با اعداد
TreeSet با عددها هم کار می کند. اعداد را از کوچک به بزرگ می چیند.
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(40);
numbers.add(10);
numbers.add(30);
numbers.add(20);
for (int n : numbers) {
System.out.println(n);
}
}
}
مقایسه HashSet و TreeSet
نکته: اگر سرعت مهم است، از HashSet استفاده کن. اگر مرتب بودن مهم است، TreeSet بهتر است.
کلیدواژه var در تری ست جاوا
از جاوا 10 «var» نوع را حدس می زند. اما برای شفافیت، خیلی ها نوع کامل را می نویسند.
// Without var
TreeSet<String> cars = new TreeSet<String>();
// With var
var cars = new TreeSet<String>();
اعلان با Set و نمونه TreeSet
گاهی متغیر را Set اعلام می کنند اما نمونه TreeSet می سازند. این روش انعطاف آینده را بیشتر می کند.
import java.util.Set;
import java.util.TreeSet;
Set<String> cars = new TreeSet<>();
گام های تمرینی
- یک TreeSet بساز و چند نام اضافه کن.
- یک نام تکراری بفرست و نتیجه را ببین.
- با contains و size وضعیت را بررسی کن.
نکته: برای آشنایی با مجموعه ها، صفحه مجموعه (Set) را هم ببین. اگر ترتیب ورود مهم است، LinkedHashSet را بررسی کن.
جمع بندی سریع
- TreeSet یکتا و همیشه مرتب است.
- تکراری ها حذف می شوند.
- contains و remove پرکاربرد هستند.
- اعداد و رشته ها را طبیعی مرتب می کند.
- برای سرعت تنها، HashSet مناسب تر است.