public static <T> Collector<T,?,List<T>> toUnmodifiableList()
public static <T> Collector<T,?,Set<T>> toUnmodifiableSet()
根据字面上的意思就是返回的ArrayList或HashSet结果是不可更改的。以上两个方法以toUnmodifiableList为例进行说明,看例子:
void test44() {
Set<Integer> list = Set.of(2,5,8,9,4,20,11,43,55);
List<Integer> ls = list.stream().collect(Collectors.toList());
ls.add(10);
ls.stream().forEach(System.out::print);
System.out.println("\t");
List<Integer> ls2 = list.stream().collect(Collectors.toUnmodifiableList());
ls2.add(10);
ls2.stream().forEach(System.out::print);
}
执行结果:
420255119843510
Exception in thread "main" java.lang.UnsupportedOperationException
如果把ls2.add(10);这行代码注释掉,执行结果:
119843542025510
1198435420255