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