我们如何在Java 9中创建不可修改的Set?

不变的静态工厂方法Set.of()可以提供一种方便的方法来在Java 9中创建不可修改的 集 。 

通过使用Set.of()方法创建的集合的实例具有以下特征。

  • 通常,通过工厂方法返回的集合是不可变的。这意味着不能从Set中添加删除替换 元素。在Set上调用任何mutator 方法都会导致UnsupportedOperationException

  • 如果Set包含的元素是可变的,则可能导致Set的内容似乎发生变化。

  • 一个不可变 集 可以使用静态工厂方法不允许创建空 的元素。如果我们尝试使用null元素创建,则会抛出NullPointerException

  • 在创建不可变的集时,它将拒绝重复的 元素 。传递给静态工厂方法的重复元素将导致IllegalArgumentException

  • set元素的迭代顺序不确定, 并且可能会发生变化。

语法

Set.of(E... elements)

示例

import java.util.Set;
public class SetOfMethodTest {
   public static void main(String args[]) {
      Set<String> names = Set.of("Adithya", "Bhavish", "Chaitanya", "Jai");
      System.out.println("Names - " + names);
      names.add("Raja");       // throws UnsupportedOperationException   }
}

输出结果

Names - [Bhavish, Adithya, Jai, Chaitanya]Exception in thread "main" java.lang.UnsupportedOperationException
 at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
 at java.base/java.util.ImmutableCollections$AbstractImmutableSet.add(Unknown Source)
   at SetOfMethodTest.main(SetOfMethodTest.java:8)