• lambda表达式的使用


    1. 举例 (o1,o2) -->Integer.compare(o1,o2);

     

    2. 格式:
     *         -->: lambda操作符或箭头操作符
     *         -->: 左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)
     *         -->: 右边:lambda体(其实就是重写的抽象方法的方法体) 

    3. lambda表达式的使用(分为6钟情况介绍) 

    4. lambda的实质:作为函数式接口的本质 

    如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口

    举例:

    1. @FunctionalInterface
    2. public interface MyInterface {
    3. void method1();
    4. }

     

    5. 总结:
     *         -->: 左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda形参列表只有一个参数,一对() 可以省略
     *         -->: 右边:lambda体由一对{}包裹,如果lambda体只有一条执行语句,(可能是return)
     *                   可以省略{},和return 关键字 

    举例说明:

     语法格式一 : 无参无返回值

    1. //语法格式一:无参无返回值
    2. @Test
    3. public void test1() {
    4. Runnable r1=new Runnable() {
    5. @Override
    6. public void run() {
    7. System.out.println("我爱北京天安门");
    8. }
    9. };
    10. r1.run();
    11. System.out.println("-------------------------");
    12. Runnable r2=()-> System.out.println("我爱北京故宫");
    13. r2.run();
    14. }

    语法格式二: lambda需要一个参数,但是没有返回值

    1. //语法格式二: lambda需要一个参数,但是没有返回值
    2. @Test
    3. public void test2() {
    4. Consumer<String> con=new Consumer<String> () {
    5. @Override
    6. public void accept(String t) {
    7. System.out.println(t);
    8. }
    9. };
    10. con.accept("谎言和誓言的区别是什么?");
    11. System.out.println("--------------------");
    12. Consumer<String> con1=(String t)->{
    13. System.out.println(t);
    14. };
    15. con1.accept("一个是听的人当真,一个是说的人当真");
    16. }

     语法格式三:数据类型可以省略,因为可由编译器推断得出,称为"类型推断"

    1. //语法格式三:数据类型可以省略,因为可由编译器推断得出,称为"类型推断"
    2. @Test
    3. public void test3() {
    4. Consumer<String> con1=(String s)->{
    5. System.out.println(s);
    6. };
    7. con1.accept("谎言和誓言的区别是什么?");
    8. System.out.println("-------------------");
    9. Consumer<String> con2 =(s)->{
    10. System.out.println(s);
    11. };
    12. con2.accept("谎言和誓言的区别是什么?");
    13. }

     语法格式四:lambda 若只需要一个参数时,参数的小括号可以省略

    1. //语法格式四:lambda 若只需要一个参数时,参数的小括号可以省略
    2. @Test
    3. public void test4() {
    4. Consumer<String> con1 =(s)->{
    5. System.out.println(s);
    6. };
    7. con1.accept("谎言和誓言的区别是什么?");
    8. System.out.println("-----------------------");
    9. Consumer<String> con2= s->{
    10. System.out.println(s);
    11. };
    12. con2.accept("一个是听的人当真了,一个是说的人当真了");
    13. }

     语法格式五:lambda需要两个或以上的参数,多条执行语句,并且可以有返回值

    1. //语法格式五:lambda需要两个或以上的参数,多条执行语句,并且可以有返回值
    2. @Test
    3. public void test5() {
    4. Comparator<Integer> com1=new Comparator<Integer> () {
    5. @Override
    6. public int compare(Integer o1, Integer o2) {
    7. System.out.println(o1);
    8. System.out.println(o2);
    9. return o1.compareTo(o2);
    10. }
    11. };
    12. System.out.println(com1.compare(12, 21));
    13. System.out.println("-------------------------------");
    14. Comparator<Integer> com2=(o1,o2) ->{
    15. System.out.println(o1);
    16. System.out.println(o2);
    17. return o1.compareTo(o2);
    18. };
    19. System.out.println(com2.compare(12, 6));
    20. }

     语法格式六:当lambda体只有一条语句时,return 与大括号若有,都可以省略

    1. //语法格式六:当lambda体只有一条语句时,return 与大括号若有,都可以省略
    2. @Test
    3. public void test6() {
    4. Comparator<Integer> com1=(o1,o2) ->{
    5. System.out.println(o1);
    6. System.out.println(o2);
    7. return o1.compareTo(o2);
    8. };
    9. System.out.println(com1.compare(12, 6));
    10. System.out.println("----------------------------");
    11. Comparator<Integer> com2=(o1,o2) -> o1.compareTo(o2);
    12. System.out.println(com2.compare(12, 6));
    13. }

     语法格式七:省略(), {}

    1. // 语法格式七:省略(), {}
    2. @Test
    3. public void test7() {
    4. Consumer<String> con1= s->{
    5. System.out.println(s);
    6. };
    7. con1.accept("一个是听的人当真了,一个是说的人当真了");
    8. System.out.println("===============");
    9. Consumer<String> con2= s-> System.out.println(s);
    10. con2.accept("一个是听的人当真了,一个是说的人当真了");
    11. }

     

  • 相关阅读:
    类继承关系梳理
    C语言-贪吃蛇 1.输入控制ncurse
    图书《人工智能怎么学》官方课件正式发布
    深拷贝和浅拷贝是什么,有什么区别?
    java多线程的简单应用
    【MQTT】Esp32数据上传采集:最新mqtt插件(支持掉线、真机调试错误等问题)
    代码整洁之道-读书笔记之函数
    Activiti 7 —— BPMN —— Visual Paradigm —— BPMN工作流程图组件了解应用、绘图、结构组成、案例学习
    Python 可迭代对象、迭代器、生成器
    MySQL数据库—创建数据库与数据表
  • 原文地址:https://blog.csdn.net/m0_46306264/article/details/125425408