首页 > 其他 > 详细

Lambda表达式

时间:2020-05-11 16:57:22      阅读:47      评论:0      收藏:0      [点我收藏+]
  1 package com.yhqtv.java1;
  2 
  3 import org.junit.Test;
  4 
  5 import java.util.ArrayList;
  6 import java.util.Comparator;
  7 import java.util.function.Consumer;
  8 
  9 /*
 10  * @author  XMKJ  yhqtv.com Email:yhqtv@qq.com
 11  * @create 2020-05-11-14:28
 12  *
 13  * 总结六种情况:
 14 ->左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda形参列表只一个参数,其一对()也可以省略
 15 ->右边:lambda体应该使用一对{}包裹;如果lambda体只一条执行语句(可能是return语句,省略这一对{}和return关键字
 16  *
 17  *
 18  *
 19  */
 20 public class LambdaTest1 {
 21     //语法格式一:无参、无返回值
 22     @Test
 23     public void test1() {
 24         Runnable r1 = new Runnable() {
 25             @Override
 26             public void run() {
 27                 System.out.println("我要坚持!!!");
 28             }
 29         };
 30         r1.run();
 31         System.out.println("=========================");
 32 
 33         Runnable r2 = () -> System.out.println("我要坚持6666666!!!");
 34 
 35 
 36         r2.run();
 37     }
 38 
 39     //语法格式二:Lambda 需要一个参数,但是没有返回值
 40     @Test
 41     public void test2() {
 42         Consumer<String> con = new Consumer<String>() {
 43             @Override
 44             public void accept(String s) {
 45                 System.out.println(s);
 46             }
 47         };
 48         con.accept("我要加油,加快速度");
 49 
 50         System.out.println("=====================");
 51 
 52         Consumer<String> con1 = (String s) -> System.out.println(s);
 53 
 54         con1.accept("我一定要成功!");
 55 
 56     }
 57 
 58     //语法格式三:数据类型可以省略,因为可由编译器推断得出,称为“类型推断”
 59     @Test
 60     public void test3() {
 61         Consumer<String> con1 = (String s) -> System.out.println(s);
 62 
 63         con1.accept("我一定要成功!");
 64 
 65         System.out.println("=====================");
 66 
 67         Consumer<String> con2 = (s) -> System.out.println(s);
 68 
 69         con1.accept("我一定要成功!666666");
 70     }
 71 
 72     @Test
 73     public void test4() {
 74         ArrayList<String> list = new ArrayList<>();//类型推断
 75         int[] arr = {1, 2, 3};//类型推断
 76     }
 77 
 78     //语法格式四:Lambda 若只需要一个参数时,参数的小括号可以省略
 79     @Test
 80     public void test5() {
 81         Consumer<String> con1 = (s) -> System.out.println(s);
 82 
 83         con1.accept("我一定要成功!666666");
 84 
 85         System.out.println("=====================");
 86 
 87         Consumer<String> con2 = s -> System.out.println(s);
 88 
 89         con2.accept("我一定要成功!666666");
 90 
 91     }
 92 
 93     //语法格式五:Lambda 需要两个或两个以上的参数,多条执行语句,并且可以有返回值
 94     @Test
 95     public void test6() {
 96         Comparator<Integer> com1 = new Comparator<Integer>() {
 97             @Override
 98             public int compare(Integer o1, Integer o2) {
 99                 System.out.println(o1);
100                 System.out.println(o2);
101                 return o1.compareTo(o2);
102             }
103         };
104         System.out.println(com1.compare(12, 33));
105         ;
106 
107         System.out.println("======================");
108 
109         Comparator<Integer> com2 = (o1, o2) -> {
110             System.out.println(o1);
111             System.out.println(o2);
112             return o1.compareTo(o2);
113         };
114         System.out.println(com2.compare(12, 3));
115         ;
116 
117     }
118 
119     //语法格式六:当Lambda 体只有一条语句时,return 与大括号若有,都可以省略
120     @Test
121     public void test7() {
122 
123         Comparator<Integer> com1 = (o1, o2) -> {
124             return o1.compareTo(o2);
125         };
126         System.out.println(com1.compare(12, 3));
127 
128         System.out.println("======================");
129 
130         Comparator<Integer> com2 = (o1, o2) ->  o1.compareTo(o2);
131 
132         System.out.println(com2.compare(12, 3));
133 
134     }
135 }

 

Lambda表达式

原文:https://www.cnblogs.com/yhqtv-com/p/12869740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!