# Stream 流的终结方法

概念

终结操作的意思是,执行完此方法之后,Stream 流将不能再执行其他操作

常见方法

方法名说明
void forEach(Consumer action)对此流的每个元素执行操作
Long count()返回此流中的元素个数

# 代码演示

public class MyStream5 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三丰");
        list.add("张无忌");
        list.add("张翠山");
        list.add("王二麻子");
        list.add("张良");
        list.add("谢广坤");
        //method1(list);
        
//        long count ():返回此流中的元素数
        long count = list.stream().count();
        System.out.println(count);
    }
    private static void method1(ArrayList<String> list) {
        //  void forEach (Consumer action):对此流的每个元素执行操作
        //  Consumer 接口中的方法 void accept (T t):对给定的参数执行此操作
        // 在 forEach 方法的底层,会循环获取到流中的每一个数据.
        // 并循环调用 accept 方法,并把每一个数据传递给 accept 方法
        //s 就依次表示了流中的每一个数据.
        // 所以,我们只要在 accept 方法中,写上处理的业务逻辑就可以了.
        list.stream().forEach(
                new Consumer<String>() {
                    @Override
                    public void accept(String s) {
                        System.out.println(s);
                    }
                }
        );
      
        System.out.println("====================");
        //lambda 表达式的简化格式
        // 是因为 Consumer 接口中,只有一个 accept 方法
        list.stream().forEach(
                (String s)->{
                    System.out.println(s);
                }
        );
        System.out.println("====================");
        //lambda 表达式还是可以进一步简化的.
        list.stream().forEach(s->System.out.println(s));
    }
}