Lambda表达式
可以简单认为Lambda表达式是匿名内部类的简写形式。
语法 :- 完整 (参数列表)->{return 语句;}
- 参数类型可以省略
- 如果只有一个参数,小括号可以省略 参数名->{return 语句;}
- 如果只有一条语句,将大括号+return+封号全省略 参数名-> 语句
public static void main(String[] args) {
//匿名内部类
Runnable obj1 = new Runnable() {
@Override
public void run() {
System.out.println("run1");
}
};
obj1.run();
//Lambda表达式
Runnable obj2 = () -> {
System.out.println("run2");
};
obj2.run();
}
示例2:
public static void main(String[] args) {
//匿名内部类
Comparator comparator1 = new Comparator() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
};
int res1 = comparator1.compare("zhangsan", "lisi");
System.out.println(res1);
//Lambda表达式
Comparator comparator2 = (String o1, String o2) -> {
return o1.length() - o2.length();
};
int res2 = comparator2.compare("zhangsan", "lisi");
System.out.println(res2);
}
示例3:Lambda表达式参数列表的数据类型可以省略。
public static void main(String[] args) {
//Lambda表达式
Comparator comparator2 = ( o1, o2) -> {
return o1.length() - o2.length();
};
int res2 = comparator2.compare("zhangsan", "lisi");
System.out.println(res2);
}
示例4:如果Lambda的方法体只有一条语句,一对大括号和它后面的分号以及return关键字可以省略。
public static void main(String[] args) {
//Lambda表达式
Comparator comparator2 = (o1, o2) -> o1.length() - o2.length() ;
int res2 = comparator2.compare("zhangsan", "lisi");
System.out.println(res2);
}
示例5:如果参数列表只有一形参,小括号也可以省略。
public static void main(String[] args) {
//Lambda表达式
Function fun = new Function(){
@Override
public Integer apply(Integer e) {
return 10 + e;
}
};
Object res = fun.apply(20);
System.out.println(res);
Function fun2 = (item)-> 10 +item;
Integer res2 = fun2.apply(20);
System.out.println(res2);
}
示例6:如果参数列表只有一形参,小括号也可以省略。
public static void main(String[] args) {
Consumer consumer = (item)-> System.out.println(item);
consumer.accept("zhangsan");
}