Lambda表達式有參數有返回值的:
需求:使用數組存儲多個Person對象
對數組中的Person對象使用Arrays的sort方法通過年齡進行升序排序
import java.lang.reflect.Array; import java.util.Arrays; import java.util.Comparator; public class Demo01Arrays { public static void main(String[] args) { //使用數組存儲多個Person對象 Person[] arr={ new Person("柳岩",30), new Person("大大",23), new Person("傳奇",25), }; //1.對數組中的Person對象使用Arrays的sort方法通過年齡進行升序(前面-后面)排序 Arrays.sort(arr, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.getAge()-o2.getAge(); } });
//2.使用Lambda表達式,簡化匿名內部類
Arrays.sort(arr,(Person o1,Person o2)->{
return o1.getAge()-o2.getAge();
});
//遍歷數組 for (Person p:arr){ System.out.println(p); } } }
public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
需求:
給定一個計算器Calculator接口,內含抽象方法calc可以將兩個int數字相加得到和值
使用Lambda的標准格式調用invokeCalc方法,完成120和130的相加計算
public class Demo02Calculator { public static void main(String[] args) { invokeCalc(1, 2, new Calculator() { @Override public int calc(int a, int b) { return a+b; } }); //使用Lambda表達式簡化內部類的書寫 invokeCalc(10,20,(int a,int b)->{ return a+b; }); } //定義一個方法 //參數傳遞兩個int類型的整數 //參數傳遞Calculator接口 //方法內部調用Calculator中的方法calc計算兩個整數的和 public static void invokeCalc(int a,int b,Calculator c){ int sum=c.calc(a,b); System.out.println(sum); } }
import java.security.PublicKey; public interface Calculator { //定義一個計算兩個int整數和的方法並返回結果 public abstract int calc(int a,int b); }