4.3 流与集合
Collection API和Stream API的不同。
- 集合是在内存的数据结构,计算出元素才能添加到集合;
- 流是在概念上固定的数据结构,按需计算获取元素;
4.3.1 只能遍历一次
类似于迭代器,流只能消费一次,重复消费会抛出java.lang.IllegalStateException: stream has already been operated upon or closed。
List<String> title = Lists.newArrayList("Java8", "In", "Action");
Stream<String> stream = title.stream();
stream.forEach(System.out::println);
stream.forEach(System.out::println);
4.3.2 外部迭代与内部迭代
外部迭代指基于集合的循环遍历,显式取出每个元素处理,灵活性更强;
List<String> names = Lists.newArrayList();
for (Dish d : menu) {
names.add(d.getName());
}
return names;
内部迭代指流的声明式遍历,内置延迟、短路、并行等优化功能,可读性更强;
return menu.stream()
.map(Dish::getName)
.collect(Collectors.toList());

浙公网安备 33010602011771号