java8新特性lambda

/**
 * lambda表达式的使用举例
 *   1. 举例:(o1,o2) -> Integr.compare(o1,o2);
 *   2.格式
 *       ->:lambda操作符 或者 箭头操作符
 *       -> 左边 lambda 形参列表(其实就是接口中的抽象方法的形参列表)
 *       -> 右边 lambda体(其实就是重写的抽象方法的方法体)
 *   3.lambda表达式的使用:分为六种情况介绍;
 *
 *
 *   4.lambda表达式的本质:作为函数式接口的实例
 *   5.函数式接口:如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口;
 *              函数式接口都被这个注解修饰了:@FunctionalInterface,没有这个注解只要符合一个接口中,声明了一个抽象方法也叫函数式接口;
 *              @FunctionalInterface 注解只是起到了检测的作用;
 *   6.总结:
 *      ->左边:lambda形参列表的参数类型可以省略(类型推断);如果只有一个参数的话,括号可以省略,两个的话参数就不能省略
 *      -> 右边 lambda体: 如果lambda体只有一个执行语句就可以省略return 和大括号可以省略;
 */

public class LambdaTest {

    /**
     * 语法格式一:无参,无返回值的
     */
    @Test
    public void test1(){
       Runnable r1=new Runnable() {
           public void run() {
               System.out.println("我爱北京天安门你");
           }
       };

       r1.run();
        System.out.println("***********************************");
        Runnable r2= () -> System.out.println("我爱故宫");

        r2.run();
    }

    /**
     * Comparator java提供了一个用于比较的接口,提供了一个比较的方法compare;
     *  语法格式三:有参,有返回值
     */
    @Test
    public void  Test2(){
        Comparator<Integer> com1= new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {

                return Integer.compare(o1,o2);
            }
        };
        System.out.println(com1.compare(15,16));
        System.out.println("************************************");
        //lambda表达式
        Comparator<Integer> com2=(o1,o2)-> Integer.compare(o1,o2);
        System.out.println(com2.compare(17,16));
        System.out.println("****************更简洁的**********************");
        //方法引用
        Comparator<Integer> com3=Integer :: compare;
        System.out.println(com3.compare(18,16));
    }

    /**
     * Consumer:java.util.function中 Function, Supplier, Consumer,
     *          Predicate和其他函数式接口广泛用在支持lambda表达式的API中。
     *          这些接口有一个抽象方法,会被lambda表达式的定义所覆盖。
     *          Consumer的作用顾名思义,是给定义一个参数,对其进行(消费)处理,
     *          处理的方式可以是任意操作.
     *
     * @FunctionalInterface
     *  语法格式三:一个参数,但是没有返回值
     */
    @Test
    public void  Test3(){
        Consumer<String> con =new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);

            }
        };
        con.accept("谎言和誓言的区别是什么?");
        System.out.println("*************lambda**********************");
        Consumer<String> con2=s -> System.out.println(s);
        con2.accept("听的人当真了,说的人也当真了");
    }

    /**
     * 格式五:lambda 需要两个或者以上的参数,多条执行语句,并且可以返回值
     */
    @Test
    public void Test(){
       Comparator<Integer> com =new Comparator<Integer>() {
           @Override
           public int compare(Integer o1, Integer o2) {
               System.out.println(o1);
               System.out.println(o2);
               return Integer.compare(o1,o2);
           }
       };
        System.out.println(com.compare(13,4));
        System.out.println("***********************************");
        Comparator<Integer> com2= (o1,o2)->{
            System.out.println(o1);
            System.out.println(o2);
            return Integer.compare(o1,o2);
        };
        System.out.println(com2.compare(23,7));
    }

    /**
     * 语法格式六:当lambda体只有一条语句时,return 与大括号或者都可以省略
     */
    @Test
    public void Test6(){
        Comparator<Integer> com =new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        };
        System.out.println(com.compare(13,4));
        System.out.println("***********************************");
        Comparator<Integer> com2=(o1,o2) ->  o1.compareTo(o2);
        System.out.println(com2.compare(13,4));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值