Lambda表达式是一个匿名函数(指的是没有函数名的函数),它基于数学中的λ演算得名,直接对应于其中的Lambda抽象。Lambda表达式可以表示闭包。Lambda表达式允许把函数作为一个方法的参数。Lambda表达式的基本语法如下:
(parameters(参数))-<expression或(parameters)-<{statements;}
Lambda表达式是通过函数式接口(只有一个方法的普通接口)来实现的。函数式接口可以隐式地转换为Lambda表达式。为了与普通地接口区分开(普通接口中可能会有多个方法)
import java.util.Arrays;
import java.util.Comparator;
class Person{
public Person(String name,int age){
this.name=name;
this.age=age;
}
private String name;
private int age;
public int getAge(){return age;};
public String getName(){return name;};
public String toString(){return name+":"+age;};
}
public class Lambda {
public static void main(String[] args) {
Person[] people={new Person("James",25),new Person("Jack",21)};
// Arrays.sort(people, new Comparator<Person>() {
// @Override
// public int compare(Person o1, Person o2) {
// return o1.getAge()-o2.getAge();
// }
// });
Arrays.sort(people,(a,b)->a.getAge()-b.getAge());
for(Person p:people){
System.out.println(p);
}
}
}