A Set egy rendezetlen gyűjtemény, amely (a List-tel ellentétben) garantáltan nem tartalmaz ismétlődő értékeket.
A Set interfész generikus típusparamétere a Set-ben tárolt elemek típusát jelöli:
Set<Integer> ints = Set.of(1, 2, 3);
Set<String> strings = Set.of("alpha", "beta", "gamma");
Set<Object> mixed = Set.of(1, false, "foo");
Vedd észre, hogy a Set.of() metódus egy módosíthatatlan Set példányt hoz létre.
Ha olyan metódusokat próbálsz meghívni, mint az add és a remove, ezen a példányon, az futásidőben kivételt eredményez.
Egy módosítható Set létrehozásához olyan osztályt kell példányosítanod, amely implementálja a Set interfészt.
A leggyakrabban használt beépített osztály, amely ezt az interfészt implementálja, a HashSet osztály.
Set<Integer> ints = new HashSet<>();
A Set interfész a Collection és az Iterable interfészekből származik, ezért sok metódust oszt meg más gyűjteménytípusokkal.
A Collection interfészhez képest figyelemre méltó különbség azonban, hogy az olyan metódusok, mint az add és a remove, boolean értéket adnak vissza (void helyett), ami jelzi, hogy az elem benne volt-e a halmazban, amikor a metódust meghívták:
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