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); }