1、 lambda 表达式的基础语法
描述:java8中引入了一个新的操作符号“ ->” 该操作符被称为箭头操作符 或 lambda操作符。
->操作符将表达式分成两部分
左侧: 表达式的参数列表
右侧:表达式需要执行的功能 即lambda体
1.1、语法格式一 无参数,无返回值
/**
* @author zhaoyihang
* @date 2019/10/12 8:49
* @Description 无参数,无返回值
* @return
*/
@Test
public void test06(){
Runnable runnable = () -> System.out.println("无参数,无返回值");
runnable.run();
}
1.2、有一个参数,并且无返回值(当只有一个参数时,小括号可以省略)
/**
* @author zhaoyihang
* @date 2019/10/12 8:51
* @Description 有一个参数,无返回值
* @return
*/
@Test
public void test08(){
Consumer<String> con = (x) ->System.out.println(x);
con.accept("一个参数,无返回值");
}
1.3、有两个以上的参数,有返回值(如lambda体只有一条语句,大括号可以省略不写)
/**
* @author zhaoyihang
* @date 2019/10/12 8:58
* @Description 多个参数有返回值----省略大括号
* @return
*/
@Test
public void test09(){
Comparator<Integer> comparator = (x,y) -> y-x;
TreeSet<Integer> treeSet = new TreeSet<>(comparator);
treeSet.add(1);
treeSet.add(2);
treeSet.add(7);
treeSet.add(4);
for (Integer i : treeSet){
System.out.println(i);
}
}
/**
* @author zhaoyihang
* @date 2019/10/12 8:58
* @Description 多个参数有返回值
* @return
*/
@Test
public void test09(){
Comparator<Integer> comparator = (x,y) -> {
System.out.println("lambda体多行");
return y-x;
};
TreeSet<Integer> treeSet = new TreeSet<>(comparator);
treeSet.add(1);
treeSet.add(2);
treeSet.add(7);
treeSet.add(4);
for (Integer i : treeSet){
System.out.println(i);
}
}
1.4、Lambda表达式的参数列表数据类型可以不写
Comparator<Integer> comparator = (Integer x,Integer y) -> {
System.out.println("lambda体多行");
return y-x;
};
其中:x和y前面的数据类型是可以省略的