常用的函数式接口-Predicate接口练习-集合信息筛选和Function接口

常用的函数式接口-Predicate接口练习-集合信息筛选

复制代码
/*
    练习:集合信息筛选
    数组当中有多条“姓名+性别”的信息如下,
    String[] array = { "迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男", "赵丽颖,女" };
    请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,
    需要同时满足两个条件:
        1. 必须为女生;
        2. 姓名为4个字。
    分析:
        1.有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断
        2.必须同时满足两个条件,所以可以使用and方法连接两个判断条件
 */
public class Demo05Test {
    /*
        定义一个方法
        方法的参数传递一个包含人员信息的数组
        传递两个Predicate接口,用于对数组中的信息进行过滤
        把满足条件的信息存到ArrayList集合中并返回
     */
    public static ArrayList<String> filter(String[] arr,Predicate<String> pre1,Predicate<String> pre2){
        //定义一个ArrayList集合,存储过滤之后的信息
        ArrayList<String> list = new ArrayList<>();
        //遍历数组,获取数组中的每一条信息
        for (String s : arr) {
            //使用Predicate接口中的方法test对获取到的字符串进行判断
            boolean b = pre1.and(pre2).test(s);
            //对得到的布尔值进行判断
            if(b){
                //条件成立,两个条件都满足,把信息存储到ArrayList集合中
                list.add(s);
            }
        }
        //把集合返回
        return list;
    }

    public static void main(String[] args) {
        //定义一个储存字符串的数组
        String[] array = { "宫本武藏,女", "倪克斯神谕,女", "马尔扎哈,男", "哎嘿嘿,女" };
        //调用filter方法,传递字符串数组和两个Lambda表达式
        ArrayList<String> list = filter(array,(String s)->{
            //获取字符串中的性别,判断是否为女
           return s.split(",")[1].equals("");
        },(String s)->{
            //获取字符串中的姓名,判断长度是否为4个字符
           return s.split(",")[0].length()>=4;
        });
        //遍历集合
        for (String s : list) {
            System.out.println(s);
        }
    }
}
复制代码

 

常用的函数式接口-Function接口

复制代码
 /*
            定义一个方法
            方法的参数传递一个字符串类型的整数
            方法的参数传递一个Function接口,泛型使用<String,Integer>
            使用Function接口中的方法apply,把字符串类型的整数,转换为Integer类型的整数
        */
        public static void change(String s, Function<String, Integer> fun) {
            //Integer in = fun.apply(s);
            int in = fun.apply(s);//拆箱装箱
            System.out.println(in);
        }

        public static void main(String[] args) {
            //定义一个String类型的整数
            String a = "1234";
            //调用change方法,将String类型的整数转换为Integer类型的整数,使用Lambda接口
       /* change(a, (String str) -> {
            return Integer.parseInt(str);
        });*/

            //优化Lambda
            change(a, str ->Integer.parseInt(str));
        }
复制代码

 

posted @   漁夫  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示