一、基本介绍
lambda表达式,即带有参数的表达式,是Java 8新出的用来替代匿名内部类的新功能,可以提高代码可读性,减少代码冗余。
二、基本语法
- lambda表达式的基本格式为(x1,x2)->{表达式…};
- 参数数据类型可以省略;
- 参数列表:参数可以为多个,为一个的时候左右括号可以省略,也可以无参数,括号不可省略;
- 表达式为一行是括号可以省略。
三、代码实例
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Lambda {
static class Student{
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(100,"xin"));
list.add(new Student(3,"wang"));
list.add(new Student(23,"hai"));
list.add(new Student(123,"sss"));
list.add(new Student(14,"name"));
list.add(new Student(343,"name"));
list.add(new Student(555,"name"));
//传统方法实现
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return Integer.compare(o1.getId(),o2.getId());
}
});
//lambda方法实现
list.stream()
.sorted((s1,s2) -> Integer.compare(s1.getId(),s2.getId()))
.forEach(s -> System.out.println(s));
}
}