概述
Stream 流是一个用于处理集合数据的 API,它提供了一种简洁而灵活的方式来处理与集合相关的操作。在Java 8中引入的Stream API,使得集合操作更加高效和易于编写。
Stream 流提供了一系列的中间操作和终端操作,可以在不修改源集合的情况下对元素进行过滤、映射、排序、聚合等操作。中间操作返回一个新的流,这样可以进行链式的操作;而终端操作则会产生最终结果或副作用,结束流的处理。
Stream 流具有惰性求值的特点,也就是说在遇到终端操作之前,中间操作不会立即执行,而是等到需要结果时才进行处理。这种特性可以提高性能,并且允许我们以更简洁的方式来处理大量的数据。
除了提供基本的过滤、映射和排序等操作,Stream API 还支持并行处理,可以充分利用多核处理器的性能优势,从而加快数据处理的速度。
总之,Stream 流是一种功能强大的工具,可以帮助我们更轻松地对集合进行操作和处理。通过利用 Stream API,我们可以编写出更简洁、高效并且易于维护的代码。
练习
首先我们先做一个小案例。
需求:
1 把一下为“欧阳”开头的名字存储到集合里
2 把一下为“欧阳”开头并且名字为4个字的存储到集合里
3 打印结果输出
话不说的,直接上代码
package org.example;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("欧阳锋");
list.add("欧阳锋峰");
list.add("奥特锋锋锋");
list.add("欧锋锋");
/**
* 把一下为“欧阳”开头的名字存储到集合里
*/
ArrayList<String> list1 = new ArrayList<>();
for (String name : list) {
if (name.startsWith("欧阳")){
list1.add(name);
}
}
/**
* 把一下为“欧阳”开头并且名字为4个字的存储到集合里
*/
ArrayList<String> list2 = new ArrayList<>();
for (String name : list2) {
if (name.length()==3){
list2.add(name);
}
}
/**
* 打印结果输出
*/
for (String name : list2) {
System.out.println(name);
}
}
}
输出结果
欧阳锋
流编程改写
那么流式编程怎么改写尼?
话不多说,直接上代码
package org.example;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("欧阳锋");
list.add("欧阳锋峰");
list.add("奥特锋锋锋");
list.add("欧锋锋");
/**
* 流式编程
*/
list.stream().
filter(name->name.startsWith("欧阳")).
filter(name->name.length()==3).
forEach(name-> System.out.println(name));
}
}
代码解析:
按照上图我给大家所标记的地方,大家可以清楚的看到两者区别。