1. 程式人生 > 其它 >Lambda表示式之Java

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 }
世界不會因為你的疲憊,而停下它的腳步