常用的predicate接口

 此为自己摸索出来的代码  并不正规 不过结果也勉强对


import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Supplier;

public class FuXi3 {
//此为自己摸索出来的一条筛选元素名字长度和性别的代码
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList();
        Collections.addAll(arrayList, "古力娜1,男", "古力娜2,女", "古力娜3,男", "古力娜,女");//往集合快速添加元素
        demo02(arrayList, () ->{
                String p = "";
                int i = 0;
                for (int j = 0; j < arrayList.size(); j++) {
                    String s = arrayList.get(j);//获取每个元素
                    String[] split = s.split(",");//切割
                    boolean sda = split[1].equals("女");//判断
                    if ((split[0].length() < 3) || sda) {//有一个为true就执行里面的内容
                        arrayList.remove(j);//删除此索引值的元素
                        j--;//删除后仍停留在当前索引,因为后面的索引值数值会自动补上来
                    }
                }
                for (String s : arrayList) {//遍历删选好的集合 由于返回值是String类型 所以把里面的元素都合到一块了
                    p += s;
                    p += " ";
                }
                return p;//返回合好的字符串
            
        });
    }

    private static void demo02(ArrayList<String> arr, Supplier<String> a) {
        String s = a.get();
        System.out.println(s);


    }
}










正确方式筛选


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

public class FuXi3 {
    //此为自己摸索出来的一条筛选元素名字长度和性别的代码
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList();//创建集合  
        Collections.addAll(arrayList, "古力娜1,男", "古力娜2,女", "古力娜3,男", "古力娜,女");//往集合快速添加元素
        ArrayList arrayList1 = demo02(arrayList, (s) -> {//调用方法 传入参数
            String[] split = s.split(",");//重接函数式接口a的判断规则
            return split[0].length() > 3;
        }, (s) -> {
            String[] split = s.split(",");//重接函数式接口a2的判断规则
            return split[1].equals("男");
        });

        for (Object o : arrayList1) {//遍历筛选好的集合
            System.out.println(o
            );
        }
//        new Predicate<String>() {
//            @Override
//            public boolean test(String s) {
//                return false;
//            }
//        };
    }
    private static ArrayList demo02(ArrayList<String> arr, Predicate<String> a, Predicate<String> a2) {
        ArrayList<String> p =new ArrayList();//创建集合存储筛选好的元素
        for (String s1 : arr) {//遍历集合
            if (a.and(a2).test(s1)){//如果两个函数式接口测试遍历的arr元素都为true
                p.add(s1);//那么就把这个元素添加到新集合当中
            }
        }
        return p;//返回筛选好的集合

    }
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值