函数式接口,编程

函数式接口

概述
在这里插入图片描述
格式在这里插入图片描述
函数式接口作为方法的参数的使用
在这里插入图片描述
在这里插入图片描述

函数式编程

函数式接口作为方法的返回类型的使用在这里插入图片描述

常用函数式接口

1.Supplier–获取数据
在这里插入图片描述
eg在这里插入图片描述
练习:获取数组中的最大值

/*idea:求出数组中最大的元素值
* 使用函数式编程,使用supplier接口*/
public class DemoSupplier {
    /*定义一个方法将supplier接口作为方法的参数*/
    public static Integer getArrayMax(Supplier<Integer> sup){
        return sup.get();
    }

    public static void main(String[] args) {
        int[] a={1,3,-8,100,80};
        Integer max = getArrayMax(()->{
            int m=a[0];
            for (int i : a) {
                if (m<i) m=i;
            }
            return m;
        });
        System.out.println(max);
    }
}

2.Consumer接口–(使用)消费数据在这里插入图片描述
eg:在这里插入图片描述
默认方法:andThen在这里插入图片描述
eg:在这里插入图片描述
练习:在这里插入图片描述
3.Predicate接口:对数据进行判断
在这里插入图片描述
eg:
在这里插入图片描述
默认方法and:与在这里插入图片描述在这里插入图片描述
默认方法or:或在这里插入图片描述
默认方法negate:非(取反)在这里插入图片描述
eg:在这里插入图片描述
Predicate接口练习:集合信息筛选
在这里插入图片描述

public class DemoPredicate {
    /*定义筛选方法*/
    public static ArrayList<String> checkString(String[] arr, Predicate<String> pre1,Predicate<String> pre2){
        ArrayList<String> data=new ArrayList<>();
        for (String s : arr) {
            //两个判断的条件
            boolean test = pre1.and(pre2).test(s);
            //成立则向集合中添加元素
            if(test) data.add(s);
        }
        return data;
    }

    public static void main(String[] args) {
        String[] s={"迪丽热巴,女","古力娜扎,女","赵丽颖,女","马儿扎哈,男"};
        ArrayList<String> d = checkString(s, (String b) -> {
            return b.split(",")[1].equals("女");
        }, (String b) -> {
           return b.split(",")[0].length() == 4;
        });
        for (String s1 : d) {
            System.out.println(s1);
        }

    }
}

4.Function<T,R>接口:类型转换T–>R
在这里插入图片描述
apply方法进行转换
R apply(T t)
将此函数应用于给定的参数
eg:在这里插入图片描述
默认方法andThen:进行组合操作在这里插入图片描述
eg:

/*idea:使用Function<R,T>实现将一个字符串转为Integer+10,然后在转为Integer类型打印输出
* 分析:两次转换操作,可以使用andThen方法
* */
public class FunctionDemo {
    /*定义方法实现需求*/
    public static void BufferType(String s, Function<String,Integer> f1,Function<Integer,String> f2){
    /*Integer i=f1.apply(s);
        * String str=f2.apply(i);*/
        String str = f1.andThen(f2).apply(s);
        System.out.println("转换后的字符串是"+str);
    }

    public static void main(String[] args) {
        String a="125";
        BufferType(a,s->Integer.parseInt(s)+10,r->r+"");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值