函数式编程/lambda表达式

jdk 1.8 新特性:

 

  • 接口中增加了default方法(默认实现的方法)

    • 可以升级接口并且不需要继承这个接口的地方一一实现。更加便于软件升级
    • 示例:
      • jdk1.8版本之后List接口中新增了几个default方法,而实现List接口的ArrayList、LinkedList等不需要实现父类接口的方法,这就是jdk1.8接口增加default方法最大的好处。
  • 函数式编程,lambda表达式

    • 函数式接口:可以使用 注解@FunctionalInterface 声明该接口只有一个需要实现的方法
    • lambda 表达式:返回一个  —>  实现了指定接口抽象方法的对象实例,而不是调用了方法!!

函数式编程/lambda

接口输入参数返回类型说明
Predicate<T>Tboolean断言
Consumer<T>T/消费一个数据
Supplier<T>/T提供一个数据
UnaryOperator<T>TT一元函数(输入输出类型相同)
BiFunction<T,U,R>(T,U)R2元函数—2个参数类型,一个返回类型
BinaryOperator<T>TT2元函数——输入输出类型相同

代码示例:


import java.util.function.*;

public class Demo1 {

    public static void main(String[] args) {
        // 断言函数接口
        // Predicate<T>、IntPredicate
        IntPredicate intPredicate = (p -> p > 0);
        System.out.println(intPredicate.test(-90));
        System.out.println(intPredicate.test(90));

        // 消费函数接口
        // Consumer、IntConsumer
        IntConsumer consumer = (c -> System.out.println("消费了" + c));
        consumer.accept(100);

        // 输入T,输出R的函数
        Function<String,Integer> function = ((s -> Integer.parseInt(s)));
        System.out.println(function.andThen(s -> "输入的是:"+s).apply("100")); // 使用了链式编程

        // 提供一个数据
        Supplier<Integer> supplier = (() -> 1);
        System.out.println(supplier.get());

        // 一元函数 (输入输出类型相同)
        UnaryOperator<Integer> unaryOperator = ((i) -> i + 100);
        System.out.println(unaryOperator.apply(100));

        // 2个输入的函数。两个入参类型,一个返回类型
        BiFunction<Integer,Long,Double> biFunction = ((i,j) -> Double.valueOf(i + j));
        System.out.println(biFunction.apply(10,100L));

        // 二元函数(输出输入类型相同)
        BinaryOperator<Integer> binaryOperator = ((i,j) -> i+j);
        System.out.println(binaryOperator.apply(100,10));


    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值