使用stream流筛选集合中的数据
使用传统的方式来筛选集合中的元素,我们可以想象到的方式就是遍历集合,将符合条件的元素存入一个新的集合中,或者将不符合的元素从集合中剔除。可是如果一旦筛选条件不止一个的时候,就会发现这种处理方式很繁琐,所以这个时候可以考虑使用jdk8的新特性,流式操作,再配合上lambda表达式和函数引用来简化代码的书写
常用方法
- 终结方法:返回值类型不再是
Stream
接口自身类型的方法,因此不再支持链式调用
- forEach 逐一处理
- count 统计流中元素个数
- collect 将流转换为单列集合
- toArray 将流转换为数组
- 延迟方法:返回值类型仍然是
Stream
接口自身类型的方法
- filter 过滤筛选
- limit 只取流中的前几个
- skip 跳过流中的前几个
- concat 合并两个流
- map 改变流中数据的数据类型
- 注意:一个流的操作一定要有终结方法,可以没有非终结方法;创建一个流,只能使用一次,对流中的数据进行操作不会影响原来集合中的元素
具体的演示案例
/**
* 这是往集合中存储的对象类
*/
public class Student {
/**
* 主键
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 性别
*/
private String gender;
public Student() {
}
public Student(Integer id, String name, Integer age, String gender) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
}
public Integer getId() {
return id;
}
public void setId(Integer id