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