在项目开发的过程中,我们经常会对List集合进行按条件的过滤,筛选出我们想要的结果或者是符合项目需求的数据。比如:我们有一批学生对象,每个学生都有自己的年龄属性,但是我们想要筛选出这一批学生中年龄为21和22的所有学生,我们就需要对这一批学生集合中的数据进行按条件的筛选,得到我们想要的结果。
创建学生实体类:
package com.shsj.entity;
public class Student {
private Integer stuNum; // 学号
private String name; // 姓名
private Integer age; // 年龄
public Integer getStuNum() {
return stuNum;
public void setStuNum(Integer stuNum) {
this.stuNum = stuNum;
public String getName() {
return name;
public void setName(String name) {
this.name = name;
public Integer getAge() {
return age;
public void setAge(Integer age) {
this.age = age;
@Override
public String toString() {
return "Student [stuNum=" + stuNum + ", name=" + name + ", age=" + age + "]";
使用Java8中的lambda表达式过滤
package com.shsj.test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.shsj.entity.Student;
* @Description 按条件筛选出List集合中的数据
* @author 刘鹏博
* @version v1.0
* @date 2018年8月23日
public class FilterListTest {
* @Description 创建四个学生对象并设值,保存在list集合中,模拟数据
* @author 刘鹏博
* @return List<Student>
public static List<Student> stuList() {
List<Student> stuList = new ArrayList<Student>();
Student stu1 = new Student();
stu1.setStuNum(20180823);
stu1.setName("张三");
stu1.setAge(20);
stuList.add(stu1);
Student stu2 = new Student();
stu2.setStuNum(20180824);
stu2.setName("李四");
stu2.setAge(21);
stuList.add(stu2);
Student stu3 = new Student();
stu3.setStuNum(20180825);
stu3.setName("王二");
stu3.setAge(21);
stuList.add(stu3);
Student stu4 = new Student();
stu4.setStuNum(20180826);
stu4.setName("张五");
stu4.setAge(22);
stuList.add(stu4);
return stuList;
public static void main(String[] args) {
List<Student> stuList = stuList();
// 需要筛选的条件:从stuList中筛选出年龄为21和22的学生
List<Integer> ageList = new ArrayList<Integer>();
ageList.add(21);
ageList.add(22);
// JDK1.8提供了lambda表达式, 可以从stuList中过滤出符合条件的结果。
// 定义结果集
List<Student> result = null;
result = stuList.stream()
.filter((Student s) -> ageList.contains(s.getAge()))
.collect(Collectors.toList());
// 打印原有stuList集合中的数据
System.out.println("原有stuList集合中的数据");
stuList.forEach((Student s) -> System.out.println(s.getName() + "--->" + s.getAge()));
// 打印过滤筛选后的result结果
System.out.println("过滤筛选后的result结果");
result.forEach((Student s) -> System.out.println(s.getName() + "--->" + s.getAge()));
有关更多Java8 lambda表达式的使用可参考:http://www.importnew.com/16436.html
在项目开发的过程中,我们经常会对List集合进行按条件的过滤,筛选出我们想要的结果或者是符合项目需求的数据。比如:我们有一批学生对象,每个学生都有自己的年龄属性,但是我们想要筛选出这一批学生中年龄为21和22的所有学生,我们就需要对这一批学生集合中的数据进行按条件的筛选,得到我们想要的结果。创建学生实体类:package com.shsj.entity;public clas...
在我们日常开发过程中,有很多场景需要对list集合进行取值筛选,以下是我对常用的一些知识点进行总结
首先,创建一个需要用到的对象,例如学生对象,有相关字段:姓名,年龄,性别
public class Student {
private String name;
private int age;
private String sex;
public Student...
在实际开发中,经常需要把一个列表中的元素,按照特定条件过滤出来,放到一个新的列表中。本文给出了几个例子,来描述解决这个问题的方法。
我们假设有一个书的List,需要找出其中id分别是3、6、8、9的书。
书的实体类:
package blog.zhangchao.csdnBlog;
* @author zhangchao
public class Bo
```java
List<Object> list = Arrays.asList("a", null, "b", null, "c");
List<Object> filteredList = list.stream()
.filter(obj -> obj != null)
.collect(Collectors.toList());
这个示例代码创建了一个包含一些空对象的列表。然后,使用Stream API中的`filter()`方法过滤掉空对象,并使用`collect()`方法将结果转换回一个列表。最终,`filteredList`将只包含非空对象。