关于 lambda表达式在java中的使用
Lambda 表达式是 JDK8之后 出现的一个新的用法,合理的运用Lambda 表达式可以简化程序代码,使程序看起来更为简洁。 下面从Lambda 表达式的基本格式入手简单介绍其在java中的使用。
Lambda 表达式的基本格式为(参数) -> {方法体};
lambda方法体中如果方法体语句只有一句,方法体前后的{}可省略:
Num num2 = (a) -> System.out.println(“222”);
lambda表达式如果只有一个参数,参数前后的()可以省略:
Num num3 = a -> System.out.println(“333”);
如果方法体语句只有一句,并且还是return语句,那么方法体前后的{}和return关键字均可省略:
Run run = (a,b) -> {return a+b;};
Run run1 = (a,b) -> a+b;
Lambda 表达式中方法的使用
编译器能根据上下文来推断Lambda表达式的参数的场合,可以在Lambda表达式中省略参数,直接通过“::”符号来引用方法。方法引用的语法格式有以下2中:
第一种方式:objectName::instanceMethod //引用实例方法
第二种方式: ClassName::staticMethod //引用静态方法
下面举例说明:
x-> System.out.println(x) 等同于: System.out::println; //引用实例方法
(x,y)->Math.max(x,y) 等同于: Math::max //引用静态方法
lambda表达式在java中的应用场景
1.用lambda表达式代替内部类
使用lambda表达式代替内部类的前提是 接口中只能有一个必须被重写的抽象方法下面以线程为例
public class Test {
//一、使用匿名内部类
public static void main(String[] args) {
new Thread(new Runnable() {
public void run() {
System.out.println(“内部类实现”);
}
}).start();
//二、使用Lambda表达式
new Thread(()->System.out.println(“使用Lambda表达式实现”)).start();
}
}
2.用lambda表达式遍历List集合
List list = new ArrayList<>();
Collections.addAll(list,new String[]{“Tome”,“Make”,“Jike”,“Honey”});
//传统的List遍历集合
for(String name : list){
System.out.print(name+",");
}
//方式二:使用Lambda表达式
list.forEach((String name)->{ System.out.print(name+","); });
//方式三:在 Java 8 中使用双冒号操作符
list.forEach(System.out::print) ;