

案例:
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));}}
