IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 8 List Filter -> 正文阅读

[Java知识库]java 8 List Filter

参考Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合。

1.maven项目添加依赖

<properties>
        <java.version>1.8</java.version>
        <alibaba.fastjson.version>1.2.76</alibaba.fastjson.version>
        <projecglombok.version>1.18.20</projecglombok.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${alibaba.fastjson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${projecglombok.version}</version>
        </dependency>
    </dependencies>

2.有实体类如下,实现Comparable接口,实现接口的compareTo()方法

import java.time.LocalDate;
 
import lombok.Builder;
import lombok.Data;
 
@Data
@Builder
public class StudentInfoimplements Comparable<StudentInfo> {
 
    private String name;
    private Integer age;
    private Boolean gender;
    private Double height;// 身高
    private LocalDate birthday;
 
}

3. 实现过滤

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import com.alibaba.fastjson.JSONObject;
 
public class ListFilter {
    private static Logger logger = LoggerFactory.getLogger(ListFilter.class);
 
    public static void main(String[] args) {
        listFilterTest();
    }
 
    public static void listFilterTest() {
        // 测试数据
        List<StudentInfo> studentList =new ArrayList<>();
        studentList.add(StudentInfo.builder().name("李小明").gender(true).age(18).height(1.76).birthday(LocalDate.of(2001,3,23)).build());
        studentList.add(StudentInfo.builder().name("张小丽").gender(false).age(18).height(1.61).birthday(LocalDate.of(2001,6,3)).build());
        studentList.add(StudentInfo.builder().name("王大朋").gender(true).age(19).height(1.82).birthday(LocalDate.of(2000,3,11)).build());
        studentList.add(StudentInfo.builder().name("陈小跑").gender(false).age(17).height(1.67).birthday(LocalDate.of(2002,10,18)).build());
 
        logger.info("before filter studentInfos is {}", JSONObject.toJSON(studentList));
        // 查找身高在1.8米及以上的男生
        List<StudentInfo> boys = studentList.stream().filter(s -> s.getGender() && s.getHeight() >=1.8).collect(Collectors.toList());
        // 输出查找结果
        logger.info("after filter studentInfos is {}", JSONObject.toJSON(boys));
    }
}

4.运行方法,log如下

23:44:18.324 [main] INFO com.example.utilsDemo.ListFilter - before filter studentInfos is [{"birthday":"2001-03-23","gender":true,"name":"李小明","age":18,"height":1.76},{"birthday":"2001-06-03","gender":false,"name":"张小丽","age":18,"height":1.61},{"birthday":"2000-03-11","gender":true,"name":"王大朋","age":19,"height":1.82},{"birthday":"2002-10-18","gender":false,"name":"陈小跑","age":17,"height":1.67}]

23:44:18.350 [main] INFO com.example.utilsDemo.ListFilter - after filter studentInfos is [{"birthday":"2000-03-11","gender":true,"name":"王大朋","age":19,"height":1.82}]

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:22:10  更:2021-08-01 14:23:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 5:19:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码