Ένα 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 επιστρέφουν boolean (αντί για void), που δείχνει αν το στοιχείο υπήρχε στο σύνολο όταν κλήθηκε εκείνη η μέθοδος:
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