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