Set مجموعهای است بدون ترتیب که (برخلاف List) تضمین میشود هیچ مقدار تکراری در آن وجود نداشته باشد.
پارامتر نوع جنریکِ واسط Set، نوع عناصر موجود در Set را مشخص میکند:
Set<Integer> ints = Set.of(1, 2, 3);
Set<String> strings = Set.of("alpha", "beta", "gamma");
Set<Object> mixed = Set.of(1, false, "foo");
توجه کنید که متد Set.of() یک نمونهی تغییرناپذیر از Set میسازد.
اگر بخواهید متدهایی مانند add و remove را روی این نمونه فراخوانی کنید، در زمان اجرا استثنا رخ میدهد.
برای ساختن یک Set قابلتغییر، باید کلاسی را نمونهسازی کنید که واسط Set را پیادهسازی میکند.
پرکاربردترین کلاس توکاری که این واسط را پیادهسازی میکند، کلاس HashSet است.
Set<Integer> ints = new HashSet<>();
واسط Set از واسطهای Collection و Iterable ارث میبرد و به همین دلیل متدهای زیادی را با دیگر گونههای مجموعه مشترک دارد.
اما یک تفاوت چشمگیر با واسط Collection این است که متدهایی مانند add و remove به جای void یک boolean برمیگردانند که نشان میدهد هنگام فراخوانی آن متد، عنصر در مجموعه وجود داشته است یا نه:
Set<Integer> set = new HashSet<>();
set.add(1);
// => true
set.add(2);
// => true
set.add(1);
// => false
set.size();
// => 2
set.contains(1);
// => true
set.contains(3);
// => false
set.remove(3);
// => false
set.remove(2);
// => true
set.size();
// => 1