Un Set es una colección sin orden que (a diferencia de List) tiene garantizado que no contiene ningún valor duplicado.
El parámetro de tipo genérico de la interfaz Set denota el tipo de los elementos que contiene el 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");
Ten en cuenta que el método Set.of() crea una instancia de Set no modificable.
Si intentas llamar a métodos como add y remove en esta instancia, se producirá una excepción en tiempo de ejecución.
Para crear un Set modificable, tienes que instanciar una clase que implemente la interfaz Set.
La clase integrada que más se usa para implementar esta interfaz es la clase HashSet.
Set<Integer> ints = new HashSet<>();
La interfaz Set extiende las interfaces Collection e Iterable, y por lo tanto comparte muchos métodos con otros tipos de colecciones.
No obstante, una diferencia notable respecto a la interfaz Collection es que métodos como add y remove devuelven un boolean (en lugar de void) que indica si el elemento estaba contenido en el conjunto cuando se llamó a ese método:
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