lambda表达式-02 Stream详解


一、什么是Stream?Stream有什么优点呢?   

    Stream是处理数组和集合的API 

二、Sream的生成操作:

 1  String[] arr = new String[]{"2", "3", "4"};
 2         Stream.of(arr).forEach(System.out::println);
 3         //通过集合来生成
 4         List list = Arrays.asList("a", "b", "c");
 5         Stream stream = list.stream();
 6         stream.forEach(System.out::println);
 7 
 8         Stream generate11 = Stream.generate(() ->1);
 9        // generate11.forEach(System.out::println);
10         generate11.limit(10).forEach(System.out::println);
11         //使用iterator
12         Stream iterate = Stream.iterate(2, (x) -> x + 1);
13         iterate.limit(10).forEach(System.out::println);

三、Stream的中间操作:注意:只要不到最终执行结果,流是不会执行的,这样大大的节省内存空间。 只要中间是取到的Stream,那么他永远不会执行 可以通过filter测试


  List list = Arrays.asList(1,2, 3, 4, 5, 6);

//中间操作过滤
// list.stream().filter(x->x%2==0).forEach(System.out::println);
//求和
// int sum =list.stream().mapToInt(x -> x + 1).sum();
//取最大值
// Optional max = list.stream().max((a, b) -> a - b);
// System.out.println(max.get());
//求集合的最小值
// System.out.println(list.stream().min((a, b) -> a - b).get());
//取任何一个
System.out.println(list.stream().findFirst().get());
}
 

 四:手写stream的操作:

   通过一系列流操作返回一个集合和去重操作:

  SKIP 跳过多少个  mapToInt转换为Int

 五:创建一组自定义对象