一、了解Stream
Java8中有两大最为重要的改变。第一个是Lambda表达式;另一个则是Stream API(java.uiil.steam.*)。
Stream是Java8中处理集合的关键抽象概念,他可以指定你希望对集合进行的操作,可以执行非常复杂的查询、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Steam API来并行执行操作。简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。
二、什么是Stream
是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
“集合是数据,流是计算”
注意
- Stream自己不会存储元素
- Stream不会改变源对象。他们会返回一个持有结果的信Stream
- Stream操作时延迟执行的,这意味着他们会等到需要结果的时候才执行。
三、创建Stream
/**
* Stream的三个操作步骤
* 1.创建Stream
* 2.中间操作
* 3.终止操作(终端操作)
*/
@Test
public void test1(){
//1.通过Collection系列集合体提供的steam()或parallelStream()
List<String> list = new ArrayList<>();
Stream<String> stream = list.stream();
//2.通过Arrays中的静态方法stream()获取数组流
MemberEntity[] memberEntities = new MemberEntity[10];
Stream<MemberEntity> memberEntityStream = Arrays.stream(memberEntities);
//3.通过Stream中的静态方法of()
Stream<String> stream1 = Stream.of("a","b","c","d");
//4.创建无限流
//迭代
Stream<Integer> stream2 = Stream.iterate(0,(x) -> x + 2);
stream2.limit(10).forEach(System.out::println);
//生成
Stream.generate(() -> (int)(Math.random())).limit(5).forEach(System.out::println);
}