lambda是一个匿名函数(没有函数名的函数)。
在其他OOF语言中,lambda是一段匿名代码片段,在Java中结合函数式接口的含义,可以理解lambda是一类(对象,OOP思想)可以传递的匿名对象(接口实例),一段可以传递的功能代码。
形参列表 -> lambda方法体
举例:(a,b) -> Integer.compare(a,b)
形参列表:(a,b) 抽象(接口)方法的形参列表
操作符: : -> 箭头操作符
方法体: Integer.compare(a,b) 抽象方法实现(或接口方法实现)
lambda 在一些情况下可以对参数或者方法体进行省略。
@Test
public void test1(){
Runnable runnable = ()->{
System.out.println(" 我是run方法的实现 ");
};
}
@Test
public void test2(){
Consumer<String> consumer = (String str) -> {
System.out.println(" 传入参数是:" + str);
};
}
多个入参以“,"隔开,如: (String s1,Integer s2)-> {}
@Test
public void test5(){
Comparator<String> consumer = (String s1,String s2) -> {
System.out.println(" 传入参数是:" + s1 + "->"+ s2);
return s1.compareTo(s2);
};
}
//[有入参,无返回值]例子可以简写成:
@Test
public void test2(){
Consumer<String> consumer = (str) -> {
System.out.println(" 传入参数是:" + str);
};
}
类型推断示例:
HashMap<String,Object> map = new HashMap<>();
String[] data = {"",""};
// 继续改造上面的例子
@Test
public void test2(){
Consumer<String> consumer = tr -> {
System.out.println(" 传入参数是:" + str);
};
}
//[多个入参,且可以返回值] 例子改造
@Test
public void test5(){
Comparator<String> consumer = (s1,s2) -> s1.compareTo(s2);
}