1. Stream 的官方描述
A sequence of elements supporting sequential and parallel aggregate operations .
(一个序列的元素支持顺序和并行聚合操作。)
理解:
Stream是元素的集合,这点让Stream看起来用些类似Iterator;
可以支持顺序和并行的对原Stream进行聚合(聚合也可以理解为聚汇、合并)的操作。
Note:
可以把Stream当成一个高级版本的Iterator。原始版本的Iterator,
用户只能一个一个的遍历元素并对其执行某些操作;
高级版本的Stream,用户只要给出需要对其包含的元素执行什么操作,
如“过滤掉长度大于10的字符串”、“获取每个字符串的首字母”等,
具体这些操作如何应用到每个元素上,就给Stream就OK了!
// 不使用lambda表达式为每个订单加上12%的税
List costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
for (Integer cost : costBeforeTax) {
double price = cost + .12*cost;
System.out.println(price);
}
// 使用lambda表达式
List costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.stream().map((cost) -> cost + .12*cost).forEach(System.out::println);