极悦小编来告诉大家Lambda语法的格式。
//左侧: Lambda 表达式的参数列表
//右侧: Lambda 表达式中所需执行的功能,即Lambda体
package com.lm;
import org.junit.Test;
import java.util.*;
import java.util.function.Consumer;
//左侧: Lambda 表达式的参数列表
//右侧: Lambda 表达式中所需执行的功能,即Lambda体
public class TestLambda7 {
// 语法格式一: 无参数无返回值
// ()-> System.out.println("Hello world");
@Test
public void test1() {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Hello world");
}
};
r.run();
System.out.println("--------------------------");
Runnable r1 = ()-> System.out.println("Hello world");
r1.run();
}
// 语法格式二: 有一个参数,无有返回值
// (x) -> System.out.println(x)
@Test
public void test2() {
Consumer<String> con = (x) -> System.out.println(x);
con.accept("hello world");
}
// 语法格式三: 如果只有有一个参数,小括号可以省略不写
@Test
public void test3() {
Consumer<String> con = x -> System.out.println(x);
con.accept("hello world");
}
// 语法格式四:有两个以上参数,有返回值,并且Lammbda 体中有多条语句
//多条语句用大括号
@Test
public void test4() {
Comparator<Integer> com = (x,y) -> {
System.out.println("函数式接口");
return Integer.compare(x,y);
};
Integer result = com.compare(1,2); //比大小
System.out.println(result);
}
// 语法格式五:有两个以上参数,有返回值,并且Lammbda 体中只有一条语句,
// return和大括号可以省略不写
// Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
@Test
public void test5() {
Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
Integer result = com.compare(1,2); //比大小
System.out.println(result);
}
// 语法格式六:
// Lammbda 表达式参数列表的数据类型可以省略不写,JVM编译器会通过上下文推断出数据类型,即“类型推断”
// Comparator<Integer> com = (Integer x,Integer y) -> Integer.compare(x,y);
// Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
// Comparator<Integer> com 这里指定了数据类型
@Test
public void test6() {
Comparator<Integer> com = (Integer x,Integer y) -> Integer.compare(x,y);
Integer result = com.compare(1,2); //比大小
System.out.println(result);
}
//上下文推断数据类型
@Test
public void test7() {
//由后面推断数据类型
String[] strs = {"aaa","bbb","ccc"};
//这种情况就没法推断数据类型
// String[] strs1;
// strs1 = {"aaa","bbb","ccc"};
//后在<>类型由前面推断出是String类型
List<String> list = new ArrayList<>();
//这里HashMap不带数据类型,是由下面的方法参数推断出来的,这里可以不写,这是jdk1.8新特性,JDK1.7就会出错
showMap(new HashMap<>());
}
public void showMap (Map<String,Integer> map){
System.out.println(map);
};
}
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习