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 Listlist = 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测试
Listlist = 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();
//取最大值
// Optionalmax = 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
五:创建一组自定义对象