// 1.拿到所有姓张的再打印
ArrayList<String> zhangList = new ArrayList<>();
for (String name : list) {
if (name.startsWith("张")) {
zhangList.add(name);
}
}
//2. 然后筛选名字有三个字的人;
ArrayList<String> threeList = new ArrayList<>();
for (String name : zhangList) {
if (name.length() == 3) {
threeList.add(name);
}
}
// 3.遍历结果
for (String name : threeList) {
}
用stream优化: list.stream().filter(s -> s.startsWith("张"))
.filter(s -> s.length() == 3)
.forEach();
好处:Stream API流不仅能避免大量for代码(对循环后的结果进行链式调用)、创建集合的开销
同时能快速进行加工,如筛选、切片、映射、查找、去除重复,统计,匹配和归约。
1.Collection及子接口下新增默认方法:default Stream stream()
注:map获取对应的流需要分key、value或entry三种情况单独获取stream
2.Stream内部有of方法,通过传递可变参数 获取流,比如: (基本数据类型不可以)
String[] arr = {"aa", "bb", "cc"};
Stream<String> stream7 = Stream.of(arr);
Integer[] arr2 = {11, 22, 33};
Stream<Integer> stream8 = Stream.of(arr2);
常用API:
主要分为 1.支持链式调用(返回加工后的Stream) 2.直接结果的终结方法
一个流只能操作一次,返回的是新的流,而且操作stream流的最后必须以终结方法结束