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