使用Predicate 进行条件判断

本文介绍如何使用Java中的Predicate接口进行数据筛选。通过具体示例,演示了如何结合and方法来实现多条件筛选,最终将符合条件的数据收集到ArrayList中。此教程适合初学者和有一定经验的开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.ArrayList;
import java.util.function.Predicate;

public class PredicateTest {
    /*
        String[] strArray = {"林青霞,30","刘岩,34","张曼玉,35","貂蝉,31","王祖贤,33"};
        字符串数组中有多条数据,通过Predicate 接口的拼装将符合要求的字符串筛选到集合ArrayList中,
        并遍历ArrayList集合
        要求:同时满足如下要求
        1:姓名长度大于2
        2:年龄大于33
        分析:
        1:有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断
        2:必须同时满足两个条件,所以可以使用and方法连接两个判断条件
     */
    public static void main(String[] args) {

        String[] strArray = {"林青霞,30","刘岩,34","张曼玉,35","貂蝉,31","王祖贤,33"};
//        内部类实现方法
//        ArrayList<String> retArr = myFilter(strArray, new Predicate<String>() {
//            @Override
//            public boolean test(String s) {
//                boolean b = s.split(",")[0].length() > 2;
//                return b;
//            }
//        }, new Predicate<String>() {
//            @Override
//            public boolean test(String s) {
//                return Integer.parseInt(s.split(",")[1]) > 33;
//            }
//        });

//      采用lambda 方式实现
        ArrayList<String> retArr = myFilter(strArray,
                s -> s.split(",")[0].length() > 2,
                s -> Integer.parseInt(s.split(",")[1]) >= 33);


        //遍历数组
        System.out.println(retArr);


    }

    private static ArrayList<String> myFilter(String[] strArray, Predicate<String> pre1,Predicate<String> pre2){
        ArrayList<String> array =new ArrayList<String>();

        //遍历数组
        for (String str:strArray){
            if(pre1.and(pre2).test(str)){
                array.add(str);
            }
        }

        return array;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值