Java Stream两种list判断字符串是否存在方案

这里写自定义目录标题

背景

在项目开发中,经常遇到筛选list中是否包含某个子字符串,有多种方式,本篇主要介绍stream流的filter和anyMatch两种方案,记录下来,方便备查。

初始化

处理话bean

java 复制代码
@Data
public class OrderInfo implements Serializable {
    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 订单数量
     */
    private int orderNum;

    /**
     * 订单金额-分
     */
    private Long orderAmountL;

    /**
     * 支付方式:ALIPAY-支付宝,WECHATPAY-微信支付
     */
    private String payType;
}

构造list

java 复制代码
public static void main(String[] args) {
    List<OrderInfo> orderInfoList = new ArrayList<>();
    OrderInfo orderInfo = new OrderInfo();
    orderInfo.setPayType("ALIPAY");
    orderInfoList.add(orderInfo);;
}

方法一、filter过滤

使用stream流的filter方法,

java 复制代码
public static void main(String[] args) {
    List<OrderInfo> orderInfoList = new ArrayList<>();
    OrderInfo orderInfo = new OrderInfo();
    orderInfo.setPayType("ALIPAY");
    orderInfoList.add(orderInfo);
    boolean filterFlag = StreamFilterList(orderInfoList);
    System.out.println("StreamFiler遍历结果为:"+ filterFlag );
}

private static boolean StreamFilterList(List<OrderInfo> orderInfoList){
    boolean filterFlag = orderInfoList.stream().filter(order->order.getPayType().equals("ALIPAY")).findAny().isPresent();
    System.out.println("StreamFilterList遍历结果为:"+ filterFlag );
    return filterFlag;
}

执行结果如下所示。

方法二、anyMatch匹配

Stream流的anyMatch过滤方法,只要在list中找到满足条件的字符串即返回成功。
allMatch 过滤方法,顾名思义,list中所有记录均能找到满足条件的字符串才返回成功。

java 复制代码
public static void main(String[] args) {
    List<OrderInfo> orderInfoList = new ArrayList<>();
    OrderInfo orderInfo = new OrderInfo();
    orderInfo.setPayType("ALIPAY");
    orderInfoList.add(orderInfo);
    boolean filterFlag = StreamAnyMatchList(orderInfoList);
    System.out.println("StreamFiler遍历结果为:"+ filterFlag );
}

private static boolean StreamAnyMatchList(List<OrderInfo> orderInfoList){
    boolean anyMatchFlag = orderInfoList.stream()
            .anyMatch(order->order.getPayType().equals("ALIPAY"));
    System.out.println("StreamAnyMatch遍历结果为:"+ anyMatchFlag );
    return anyMatchFlag;
}

执行结果如下所示。

相关推荐
艾迪的技术之路7 分钟前
redisson使用lock导致死锁问题
java·后端·面试
今天背单词了吗98025 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
天天摸鱼的java工程师28 分钟前
使用 Spring Boot 整合高德地图实现路线规划功能
java·后端
东阳马生架构43 分钟前
订单初版—2.生单链路中的技术问题说明文档
java
咖啡啡不加糖1 小时前
暴力破解漏洞与命令执行漏洞
java·后端·web安全
风象南1 小时前
SpringBoot敏感配置项加密与解密实战
java·spring boot·后端
DKPT1 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
Percep_gan1 小时前
idea的使用小技巧,个人向
java·ide·intellij-idea
缘来是庄1 小时前
设计模式之迭代器模式
java·设计模式·迭代器模式