Java8 使用stream().filter()过滤List(查找符合条件的对象集合)
2023-09-11 14:20:19 时间
Java8 使用stream().filter()过滤List(查找符合条件的对象集合)
在Java8及以上版本中, 使用stream().filter()来过滤一个List对象,查找符合条件的对象集合。
代码实现
1.对象类 Teacher
import java.time.LocalDate;
import java.util.List;
/**
* @author qzz
*/
public class Teacher{
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* true:男 false:女
*/
private Boolean gender;
/**
* 身高
*/
private Double height;
/**
* 身高
*/
private LocalDate birthday;
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;
}
public Boolean getGender() {
return gender;
}
public void setGender(Boolean gender) {
this.gender = gender;
}
public Double getHeight() {
return height;
}
public void setHeight(Double height) {
this.height = height;
}
public LocalDate getBirthday() {
return birthday;
}
public void setBirthday(LocalDate birthday) {
this.birthday = birthday;
}
public Teacher(String name,Boolean gender,Integer age,Double height,LocalDate birthday){
this.name = name;
this.gender = gender;
this.age = age;
this.height = height;
this.birthday = birthday;
}
@Override
public String toString() {
String str=String.format("%s\t\t%s\t\t%s\t\t%s\t\t%s",
this.name,this.gender.toString(),this.age.toString(),
this.height.toString(),this.birthday.toString());
return str;
}
public static void printTeachers(List<Teacher> list){
System.out.println("[姓名]\t\t[性别]\t\t[年龄]\t\t[身高]\t\t[生日]");
System.out.println("------------------------------------------");
list.forEach(t-> System.out.println(t.toString()));
System.out.println(" ");
}
}
2.创建类ListFilter,测试实现list过滤效果
2.1添加测试数据
//1.构建测试数据
List<Teacher> list = new ArrayList<>();
list.add(new Teacher("张三",true,26,1.76, LocalDate.of(1996,1,18)));
list.add(new Teacher("小莉",false,21,1.61, LocalDate.of(2001,1,18)));
list.add(new Teacher("李四",true,22,1.82, LocalDate.of(2000,1,18)));
list.add(new Teacher("程曦",false,20,1.64, LocalDate.of(2002,1,18)));
2.2输出Teachers列表
//2.输出list列表
Teacher.printTeachers(list);
2.3使用filter()过滤List
//3.使用filter()过滤list
//查找身高在1.8米及以上的男生
List<Teacher> teacherList = list.stream().filter(teacher -> teacher.getGender()
&& teacher.getHeight() >= 1.8).collect(Collectors.toList());
//4.输出查找结果
Teacher.printTeachers(teacherList);
//查找年龄在20以上的女
List<Teacher> tList = list.stream().filter(teacher -> !teacher.getGender()
&& teacher.getAge() >= 20).collect(Collectors.toList());
//输出查找结果
Teacher.printTeachers(tList);
2.4完整代码
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
* @author qzz
*/
public class ListFilter {
public static void main(String[] args) {
//1.构建测试数据
List<Teacher> list = new ArrayList<>();
list.add(new Teacher("张三",true,26,1.76, LocalDate.of(1996,1,18)));
list.add(new Teacher("小莉",false,21,1.61, LocalDate.of(2001,1,18)));
list.add(new Teacher("李四",true,22,1.82, LocalDate.of(2000,1,18)));
list.add(new Teacher("程曦",false,20,1.64, LocalDate.of(2002,1,18)));
//2.输出list列表
Teacher.printTeachers(list);
//3.使用filter()过滤list
//查找身高在1.8米及以上的男生
List<Teacher> teacherList = list.stream().filter(teacher -> teacher.getGender()
&& teacher.getHeight() >= 1.8).collect(Collectors.toList());
//4.输出查找结果
Teacher.printTeachers(teacherList);
//查找年龄在20以上的女
List<Teacher> tList = list.stream().filter(teacher -> !teacher.getGender()
&& teacher.getAge() >= 20).collect(Collectors.toList());
//输出查找结果
Teacher.printTeachers(tList);
}
}
运行结果:
相关文章
- List集合复制
- dede:list 与 dede:arclist 的区别
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- Lambda表达式,List对象集合去重
- java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合
- Java基础——集合源码解析 List List 接口
- Scala数组和Java集合List的互转
- Scala集合List的常用方法:reverse/groupBy/sortBy/sortWith/iterator/map
- Scala集合:List修改及删除数据
- Scala集合:List增加元素及集合拼接操作
- Java List集合stream流 distinct() 去重代码示例
- 内部元素一一对应的集合的算法优化,从list到hashmap
- Java 常用数据结构对象的实现原理 集合类 List Set Map 哪些线程安全 (美团面试题目)
- SAP UI5 Dropdown list binding debugging
- Atitit s2018.2 s2 doc list on home ntpc.docx Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx Atiitt 手写文字
- Combit List & Label 27 Crack
- Java List集合实现倒倒序排列
- 将json字符串中数组节点转换为泛型list集合(gson)
- Python编程语言学习:将list或者dataframe类型数据进行归一化并返回(便于绘图)
- 已解决IndexError: list index out of range
- 对List集合中每个对象元素按时间顺序排序
- List 集合去重合并 , 多种方法演示___关于两个List集合对象去重
- java笔记:流式编程 数组与List集合互转
- [LeetCode] Flatten Binary Tree to Linked List
- Dubbo报错RpcException: Forbid consumer access service from registry use dubbo version , Please check registry access list (whitelist/blacklist).)
- 容器适配器之stack,queue和优先级队列---基于List实现的链栈,链队列,优先级队列
- 【Java】一篇文章带你了解Collection接口、List集合、Set集合、Map集合
- Scala的List集合和Set集合