Stream流
Stream流是什么,为什么要用它
- Stream是Java 8 新引入的一个包( java.util.stream),它让我们能用声明式的方式处理数据(集合、数组等)。
- Stream流式处理相较于传统方法简洁高效,也便于进行并发编程。
- Stream
Stream是Java8的一大亮点,是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的 聚合操作(aggregate operation)或者大批量数据操作。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。同时,它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。所以说,Java8中首次出现的 java.util.stream是一个函数式语言+多核时代综合影响的产物。
Stream流的基础使用
简单综合案例
问题和需求:在一个字符串集合中找出以“阿”开头的长度为3的字符串并打印
传统方法
import java.util.ArrayList;
import java.util.List;
public class Demo02NormalFilter {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("阿拉贡");
list.add("阿尔玟");
list.add("埃尔隆德");
list.add("凯兰崔尔");
list.add("瑟兰督伊");
List<String> zhangList = new ArrayList<>();
for (String name : list) {
if (name.startsWith("阿")) {
zhangList.add(name);
}
}
List<String> shortList = new ArrayList<>();
for (String name : zhangList) {
if (name.length() == 3) {
shortList.add(name);
}
}
for (String name : shortList) {
System.out.println(name);
}
}
}
这里我们可以看到传统的方法中含有三个循环,每一个作用不同:
- 首先筛选所有姓“阿”的人;
- 然后筛选名字有三个字的人;
- 最后进行对结果进行打印输出。
这样的处理过程代码冗长,导致代码可读性较差&#x