以下工厂方法已添加到Set接口中:
static <E> Set<E> of() static <E> Set<E> of(E e1) static <E> Set<E> of(E e1, E e2) static <E> Set<E> of(E e1, E e2, E e3) static <E> Set<E> of(E e1, E e2, E e3, E e4) static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5) static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6) static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) static <E> Set<E> of(E... elements)在每个方法列表中, 第一个方法创建一个空的不可修改的集合。接下来的10个方法可创建1-10个元素的不可修改集合。尽管这些方法比较混乱,但它们避免了final类型的可变参方法产生的数组分配,初始化和垃圾回收开销,这种方法还支持任意大小的集合。
以下是List和Set的示例:
import java.util.List; import java.util.Set; public class ColDemo { public static void main(String[] args) { List<String> fruits = List.of("apple", "orange", "banana"); for (String fruit: fruits) System.out.println(fruit); try { fruits.add("pear"); } catch (UnsupportedOperationException uoe) { System.err.println("unable to modify fruits list"); } Set<String> marbles = Set.of("aggie", "alley", "steely"); for (String marble: marbles) System.out.println(marble); try { marbles.add("swirly"); } catch (UnsupportedOperationException uoe) { System.err.println("unable to modify marbles set"); } } }运行后输出:
apple orange banana unable to modify fruits list steely alley aggie unable to modify marbles set