Lambda表达式之Java

  1 Lambda表达式的标准格式:
  2 由三部分组成:
  3 a.一些参数
  4 b.一个箭头
  5 c.一段代码
  6 格式:
  7 (参数列表) -> {一些重写方法的代码};
  8 解释说明格式:
  9 ():接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号分隔
 10 ->:传递的意思,把参数传递给方法体{}
 11 {}:重写接口的抽象方法的方法体
 12 
 13 package com.ding.demo1;
 14  
 15 /**
 16  * @Description TODO
 17  * @Author 丁帅帅
 18  * @Date 21/07/06 19:59
 19  * @Version 1.0
 20  */
 21 public interface Cook {
 22     public abstract void makeFood();
 23 }
 24  
 25  
 26  
 27 package com.ding.demo1;
 28  
 29 /**
 30  * @Description TODO
 31  * @Author 丁帅帅
 32  * @Date 21/07/06 20:03
 33  * @Version 1.0
 34  */
 35 public class Demo1Cook {
 36  
 37     public static void main(String[] args) {
 38  
 39         /**
 40          * 调用invokeCook方法,参数是Cook接口,传递Cook接口的匿名内部类对象
 41          */
 42         invokeCook(new Cook() {
 43             @Override
 44             public void makeFood() {
 45                 System.out.println("吃饭啦!!!");
 46             }
 47         });
 48  
 49         /**
 50          * 使用Lambda表达式,简化内部类的书写
 51          */
 52  
 53         invokeCook(()->{
 54             System.out.println("吃饭啦!!");
 55         });
 56  
 57       //优化省略Lambda
 58         invokeCook(()-> System.out.println("吃饭啦!"));
 59     }
 60  
 61     /**
 62      * 参数传递Cook接口,方法内部调用Cook接口中的方法makeFood
 63      * @param cook
 64      */
 65     public static void invokeCook(Cook cook){
 66         cook.makeFood();
 67     }
 68 }
 69 package com.ding.demo2;
 70  
 71 /**
 72  * @Description TODO
 73  * @Author 丁帅帅
 74  * @Date 21/07/06 20:21
 75  * @Version 1.0
 76  */
 77 public class Person {
 78  
 79     private  String name;
 80     private  int age;
 81  
 82     public Person() {
 83     }
 84  
 85     public Person(String name, int age) {
 86         this.name = name;
 87         this.age = age;
 88     }
 89  
 90     public String getName() {
 91         return name;
 92     }
 93  
 94     public void setName(String name) {
 95         this.name = name;
 96     }
 97  
 98     public int getAge() {
 99         return age;
100     }
101  
102     public void setAge(int age) {
103         this.age = age;
104     }
105  
106     @Override
107     public String toString() {
108         return "Person{" +
109                 "name='" + name + '\'' +
110                 ", age=" + age +
111                 '}';
112     }
113 }
114  
115  
116  
117 package com.ding.demo2;
118  
119 import java.util.Arrays;
120 import java.util.Comparator;
121  
122 /**
123  * @Description TODO
124  * @Author 丁帅帅
125  * @Date 21/07/06 20:23
126  * @Version 1.0
127  */
128 public class DemoArrays {
129     public static void main(String[] args) {
130         Person [] arr={
131                 new Person("张三",30),
132  
133                 new Person("李四",25),
134  
135                 new Person("王二",40)
136         };
137  
138  
139         //根据年龄进行升序
140        /* Arrays.sort(arr, new Comparator<Person>() {
141             @Override
142             public int compare(Person o1, Person o2) {
143                 return o1.getAge()-o2.getAge();
144             }
145         });*/
146  
147        //使用Lambda表达式简化匿名内部类
148         Arrays.sort(arr,(Person o1,Person o2)->{
149             return o1.getAge()-o2.getAge();
150         });
151  
152         //优化省略Lambda
153         Arrays.sort(arr,(o1,o2)->o1.getAge()-o2.getAge());
154  
155         //遍历数组
156         for(Person p:arr){
157             System.out.println(p);
158         }
159  
160     }
161 }
162 package com.ding.demo3;
163  
164 /**
165  * @Description TODO
166  * @Author 丁帅帅
167  * @Date 21/07/06 20:40
168  * @Version 1.0
169  */
170 public interface Calculator {
171  
172     public abstract int calc(int a,int b);
173 }
174  
175  
176  
177 package com.ding.demo3;
178  
179 /**
180  * @Description TODO
181  * @Author 丁帅帅
182  * @Date 21/07/06 20:41
183  * @Version 1.0
184  */
185 public class DemoCalculator {
186  
187     public static void main(String[] args) {
188         invokeCalc(10, 20, new Calculator() {
189             @Override
190             public int calc(int a, int b) {
191                 return a+b;
192             }
193         });
194  
195       //使用Lambda表达式
196         invokeCalc(10,5,(int a,int b)->{
197             return a+b;
198         });
199  
200         //优化省略Lambda
201         invokeCalc(2,3,(a,b)->a+b);
202  
203     }
204  
205  
206     public static void invokeCalc(int a,int b,Calculator c){
207         int sum=c.calc(a,b);
208         System.out.println(sum);
209     }
210 }

 

posted @ 2021-07-06 22:41  丁帅帅dss  阅读(58)  评论(0)    收藏  举报