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

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

练习:集合信息筛选

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

String[] arr = {"张三请,女",“李四考勤,女”,"王五都是,女","赵六事务,男"}

需要同时满足两个条件:

  1.必须为女生:

  2.姓名为4个字

定义一个方法

方法的参数传递一个包含人员信息的数组

传递两个Predicate接口,用于对数组中的信息进行过滤

把满足条件的信息存到ArrayList集合中并返回

public class Demo05Test {
    public static void main(String[] args) {
        String[] arr = {"张三请,女","李四考勤,女","王五都是,女","赵六事务,男"};
        //调用filter方法,传递字符串数组和两个Lambda表达式
        ArrayList<String> list = filter(arr,(String s)->{
            //获取字符串中的性别,判断是否为女
            return s.split(",")[1].equals("女");
        },(String s)->{
            //获取字符串中的姓名,判断长度是否为4个字符
            return s.split(",")[0].length()==4;
        });
        for (String s : list) {
            System.out.println(s);
        }
    }
    public static ArrayList<String> filter(String[] arr, Predicate<String> str1,Predicate<String> str2){
        //定义一个Arraylist集合,存储过滤之后的信息
        ArrayList<String> list = new ArrayList<>();
        //遍历数组
        for (String s : arr) {
            //使用Predicate接口中的方法进行判断
            boolean b = str1.and(str2).test(s);
            if (b){
                //条件成立,两个条件都满足,把信息存储到Arraylist集合中
                list.add(s);
            }
        }
        return list;
    }
}

常用的函数式接口_Function接口

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

抽象方法:apply

Function接口中最主要的抽象方法为:R apply(T t),根据类型T的参数获取类型的结果。

将String类型转换为Integer类型。

java.util.function.Function<T,R>接口用来根据一个类型的数据得到另一个类型的数据,

  前者称为前置条件,后者称为后置条件。

Function接口中最主要的抽象方法为:R applay(T t),根据类型T的参数获取类型R的结果。

  使用的场景例如:将String类型转换为Integer类型。

定义一个方法

方法的参数传递一个字符串类型的整数

方法的参数传递一个Function接口,泛型使用<String,Integer>

使用Function接口中的方法apply,把字符串类型的整数,转换为Integer类型的整数

public class DFunction {
    public static void main(String[] args) {
        String s = "1234";
        //调用方法,传递字符串类型的整数,和Lambda表达式
        change(s,(String str)->{
            //把字符串类型的整数,转换为Integer类型的整数返回
            return Integer.parseInt(str);
        });
        //优化Lambda
        change(s,str->Integer.parseInt(str));
        
    }
    public static void change(String s, Function<String,Integer> fun){
        //自动拆箱Internet-->int
        int in = fun.apply(s);
        System.out.println(in);
    }
}

 

posted @ 2022-07-20 16:09  魔光领域  阅读(29)  评论(0编辑  收藏  举报