目录
(3)前两者结合,出现异常直接抛出去给调用者,调用者捕获处理。
一、不可变集合
1.什么是不可变集合?
不可变集合,就是不可被修改的集合。
集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变。否则报错。
2.为什么要创建不可变集合?
如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。
或者当集合对象被不可信的库调用时,不可变形式是安全的。
3.如何创建不可变集合?
在List、Set、Map接口中,都存在of方法,可以创建一个不可变的集合。
方法名称 |
说明 |
static <E> List<E> of(E…elements) |
创建一个具有指定元素的List集合对象 |
static <E> Set<E> of(E…elements) |
创建一个具有指定元素的Set集合对象 |
static <K , V> Map<K,V> of(E…elements) |
创建一个具有指定元素的Map集合对象 |
二、Stream流
1.Stream流的概述
(1)什么是Stream流?
在Java 8中,得益于Lambda所带来的函数式编程, 引入了一个全新的Stream流概念。 目的:用于简化集合和数组操作的API。
(2)Stream流式思想的核心
a.先得到集合或者数组的Stream流(就是一根传送带)
b.把元素放上去
c.然后就用这个Stream流简化的API来方便的操作元素。
3.Stream流的获取
(1)集合获取Stream流的方式
名称 |
说明 |
default Stream<E> stream() |
获取当前集合对象的Stream流 |
//Collection集合获取流
Collection<String> list = new ArrayList<>();
Stream<String> s = list.stream();
//Map集合获取流
Map<String, Integer> maps = new HashMap<>();
//键流
Stream<String> keyStream = maps.keySet().stream();
//值流
Stream<Integer> valueStream = maps.values().stream();
//键值对象
Stream<Map.Entry<String, Integer>> keyAndValueStream = maps.entrySet().stream();
(2)数组获取Stream流的方式
名称 |
说明 |
public static <T> Stream<T> stream(T[] array) |
获取当前数组的Stream流 |
public static<T> Stream<T> of(T... values) |
获取当前数组/可变数据的Stream流 |
String[] names = {"张无忌", "赵敏", "周芷若", "小昭"};
Stream<String> nameStream = Arrays.stream(names);
Stream<String> nameStream2 = Stream.of(names);
4.Stream流的常用API
(1)中间方法
名称 |
说明 |
Stream<T> filter(Predicate<? super T> predicate) |
用于对流中的数据进行过滤。 |
Stream<T> limit(long maxSize) < |