C/C++教程

Predicate接口练习以及Function接口的介绍

本文主要是介绍Predicate接口练习以及Function接口的介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Predicate接口练习—集合信息筛选

数组当中有多条“姓名+性别”的信息,

请通过Predicate接口的拼装将符合要求的字符串筛选到集合Arraylist中,

需要同时满足两个条件

  1、必须是女生

  2、姓名为4个字

分析:

  1、有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断

  2、必须同时满足两个条件,所以可以使用and方法连接两个判断条件

    /*
        定义一个方法
        方法的参数传递一个包含人员信息的数组
        传递两个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对获取到的字符串进行判断
            if (pre1.and(pre2).test(s)){
                list.add(s);
            }
        }
        return list;
    }

    public static void main(String[] args) {
        //定义一个存储字符串的数组
        String[] arr = {"张三李四,男","王五,男","赵六,女","王五赵六,女"};
        //调用filter方法,传递字符串数组和两个Lambda表达式
        ArrayList<String> list = filter(arr,
                (String s)->{
                    String[] split = s.split(",");
                    //获取字符串中的姓名,判断长度是否为4个字符
                    return split[0].length()==4;
                },
                (String s)->{
                    String[] split = s.split(",");
                    //获取字符串中的性别,判断是否为女
                    return split[1].equals("女");
                });
        System.out.println(list);
    }

 

 

 

 

 

 

 

 

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

java.util.function.Function<T,R>接口用来根据一个类型的数据得到另一个类型的数据,
前者称为前置条件,后者称为后置条件。

Function接口中最主要的抽象方法为:R apply(T t),根据类型T的参数获取类型R的结果
使用的场景例如:将String类型转换为Integer类型

定义一个方法

方法的参数传递一个字符串类型的整
方法的参数传递一个Function借口而,泛型使用<String,Integer>
使用Function接口中的方法apply,把字符串类型的整数,转换为Integer类型的整数

 

    /*
        定义一个方法
        方法的参数传递一个字符串类型的整数
        方法的参数传递一个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 s = "1234";
        //调用change方法,传递字符串类型的整数和Lambda表达式
//        change(s,(String str)->{
//            //把字符串类型的整数,转换为Integer类型的整数返回
//            return Integer.parseInt(str);
//        });
        //优化Lambda表达式
        change(s,str->Integer.parseInt(str));
    }

 

这篇关于Predicate接口练习以及Function接口的介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!