定义一个数组
// 一个数组
Integer[] numArray = {1, 2, 3, 4, 5};
⏹1. 将数组转换为List
- 此时的list是可变的
// 使用stream将数组转换为list,然后过滤大于3的元素
List<Integer> numList = Arrays.stream(numArray).filter(item -> item > 3).collect(toList());
// 向过滤后的List中添加元素,并且可以添加成功,由此可以证明过滤之后得到的List是可变的
numList.addAll(Arrays.asList(6, 7));
System.out.println(numList); // [4, 5, 6, 7]
System.out.println(numList.getClass()); // class java.util.ArrayList
⏹2. 将数组转换为不可变集合List
- 此时的list是不可变的
List<Integer> immutableList = numList.stream().collect(collectingAndThen(toList(), Collections::unmodifiableList));
System.out.println(immutableList); // [4, 5, 6, 7]
System.out.println(immutableList.getClass()); // class java.util.Collections$UnmodifiableRandomAccessList
⏹3. 将数组转换为不可变集合Set
- 此时的set是不可变的
Set<Integer> immutableSet = numList.stream().collect(collectingAndThen(toSet(), Collections::unmodifiableSet));
System.out.println(immutableSet); // [4, 5, 6, 7]
System.out.println(immutableSet.getClass()); // class java.util.Collections$UnmodifiableSet