案例:
package com.itheima.d2_stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class StreamTest {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
// 使用Collectoions工具类的addAll的API将集合元素一次性添加到集合中去
Collections.addAll(names, "张三丰","张无忌" ,"周芷若","赵敏", "张强");
System.out.println(names);
// // 使用普通方法实现
// // 1. 从集合中找出姓张的放到新集合中
// List<String> zhangList = new ArrayList<>();
// for (String name : names) {
// if (name.startsWith("张")){ // 如果元素中包含了 张
// zhangList.add(name); // 就将元素添加到zhangList集合中去
// }
// }
// System.out.println(zhangList); //[张三丰, 张无忌, 张强]
//
// // 2. 找名称长度是3的姓名
// List<String> zhangThreeList = new ArrayList<>();
// // 遍历这个集合: [张三丰, 张无忌, 张强]
// for (String s : zhangList) {
// if (s.length() == 3){ // 如果遍历到的元素长度为3
// zhangThreeList.add(s); // 就将元素添加进去
// }
// }
// System.out.println(zhangThreeList);
// 3. 使用Stream实现 // filter是过滤的意思 支持链式编程(可以不断的.方法)
// 他会将遍历出来的字符串 s 一层层过滤(以上代码的简写)
// 1. 先得到集合或数组的Stream流(就是一根传送带)
// 2. 把元素放上去
// 3. 然后就用这个Stream流简化的API来方便的操作元素
names.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));
}
}