Java判断List集合中的对象是否包含有某一元素

关于以下方法,直接可以在自己项目创建一个类,然后进行测试使用!文本末尾也提供了每个方法的运行结果,供大家参考使用!

文章大量使用到了Java8当中的Lambda表达式,以及stream流相关基础知识。如果您用的不熟,没关系,可以直接复制下面的方案然后进行套着使用即可,如果想深入了解的,可以看一下这两篇文章:

Lambda讲解:https://blog.csdn.net/weixin_43888891/article/details/124795863
Stream讲解:https://blog.csdn.net/weixin_43888891/article/details/124657128

@Data
@AllArgsConstructor
@ToString
public class User {
    @ApiModelProperty("姓名")
    private String name;

    @ApiModelProperty("性别")
    private String gender;

    @ApiModelProperty("证件类型")
    private String paperworkType;

    @ApiModelProperty("证件号码")
    private String identityNumber;
}

这里用到了两个函数:

在这里插入图片描述
在这里插入图片描述

import java.util.*;
import java.util.stream.Collectors;

public class Test {
    private static final List<User> userList = Arrays.asList(
            new User("张三", "男", "身份证", "350781196403077840"),
            new User("李四", "男", "港澳证", "350781196403077840"),
            new User("王五", "男", "身份证", "350781196403071166"),
            new User("赵六", "男", "身份证", "350781196403076629"),
            new User("赵六", "男", "身份证", "350781196403078202"));

    private static final List<String> stringList = Arrays.asList("aaa", "bbb", "ccc");

    /**
     * 判断stringList是否包含某个元素
     */
    public static void method1() {
        System.out.println(stringList.contains("ccc"));
        System.out.println(stringList.contains("ddd"));
    }

    /**
     * 判断userList是否包含身份证号为350781196403077840的人
     * 方式一:使用正常的for循环
     */
    public static Boolean method2() {
        Boolean flag = false;
        for (User user : userList) {
            if (user.getIdentityNumber().equals("350781196403077840")) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    /**
     * 判断userList是否包含身份证号为350781196403077840的人
     * 方式二:使用stream
     */
    public static Boolean method3() {
        return userList.stream().anyMatch(p -> p.getIdentityNumber().equals("350781196403077840"));
    }

    /**
     * 判断userList是否包含身份证号为350781196403077840的人
     * 两个字段作为条件,一个是证件类型,一个是身份证号,来查询是否有存在的值
     */
    public static Boolean method4() {
        return userList.stream().anyMatch(p -> p.getIdentityNumber().equals("350781196403077840") && p.getPaperworkType().equals("身份证"));
    }

    /**
     * 返回身份证号为350781196403077840的人的信息,这时候就需要使用filter了
     * 两个字段作为条件,一个是证件类型,一个是身份证号,来查询是否有存在的值
     */
    public static void method5() {
        List<User> user = userList.stream().filter(p -> p.getIdentityNumber().equals("350781196403077840") && p.getPaperworkType().equals("身份证")).collect(Collectors.toList());
        user.forEach(System.out::println);
    }

    public static void main(String[] args) {
        System.out.println("-----------------method1---------------------");
        method1();
        System.out.println("-----------------method2---------------------");
        System.out.println(method2());
        System.out.println("-----------------method3---------------------");
        System.out.println(method3());
        System.out.println("-----------------method4---------------------");
        System.out.println(method4());
        System.out.println("-----------------method5---------------------");
        method5();
    }
}

输出结果:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值