引入流
2018-05-14 本文已影响2人
小鱼嘻嘻
流是什么
流是Java api的新成员,它允许你以申明式的方式处理数据集合。
申明性:更简洁,更易读
可复合:更灵活
可并行:性能更好
流的简介:从支持数据处理操作的源生成的元素序列
- 元素序列
就像集合一样,流也提供一个接口,可以访问特定元素类型的一组值。 - 源
流会使用一个提供数据的源,例如集合,数组或者输入输出资源。 - 数据处理操作
流的数据处理功能支持类似于数据库的操作。filter,map,reduce,find,sort,match。 - 流水线
很多流操作本身会返回一个流,这样的多个操作就可以链接在一起,形成流水线。 - 内部迭代
与使用迭代器显示迭代不同的集合不同,流的更多操作都是在背后迭代。
流与集合
集合与流之间的差异就在于什么时候进行计算,集合是一个内存中的数据结构,它包含数据结构中目前所有的值,集合中的每个元素的值都需要先算出来才可以添加到集合里。
流则是概念上的数据结构(不能添加或者删除元素),其元素是按需计算的。这是一种生产者和消费者的关系,只有消费者要求的时候才会计算。
内部迭代和外部迭代
使用foreach这种方式被称为外部迭代,streams库使用内部迭代。
List<Integer> list = Arrays.asList(1,2,3,45);
// 外部迭代
for (Integer i : list) {
System.out.println(i);
}
//内部迭代
list.stream().forEach(i-> System.out.println(i));
内部迭代和外部迭代.png