1.lambda表达式
概念:
Lambda表达式:特殊的匿名内部类,语法更简洁。
Lambda表达式允许把函数作为一个方法的参数(函数作为方法参数传递),将代码像数据一样传输
语法:
基本语法
<函数式接口><变量名>=(参数1,参数2)->{
//方法体;
}
函数时接口:接口中只有一个抽象方法
(参数1,参数2):抽象方法的参数
->:分割符
{}:抽象方法的实现
package com.lzl.test02;
/**
* @create 2022-07-19
*/
public class Test01 {
public static void main(String[] args) {
My task = new My();
Thread t1 = new Thread(task);
t1.start();
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("这是匿名内部类方式的任务对象");
}
});
t2.start();
Thread t3 = new Thread(()->{
System.out.println("这是使用Lambda表达式完成的");
});
t3.start();
}
}
class My implements Runnable{
@Override
public void run() {
System.out.println("自定义任务接口类");
}
}
无参无返回值
package com.lzl.test02;
/**
* @create 2022-07-19
*/
public class Test02 {
public static void main(String[] args) {
Swimmable swimmable = new Swimmable() {
@Override
public void swimming() {
System.out.println("这是使用内部匿名类的方式");
}
};
fun(swimmable);
Swimmable swimmable1 =()->{
System.out.println("这是使用Lambda表达式");
};
fun(swimmable1);
fun(()->{
System.out.println("这是简易模式的Lambda表达式");
});
}
public static void fun(Swimmable w){
w.swimming();
}
}
interface Swimmable{
public void swimming();
}
有参有返回值
package com.lzl.test03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* @create 2022-07-19
*/
public class Test01 {
public static void main(String[] args) {
List<Peoson> list =new ArrayList<>();
list.add(new Peoson("张三",19));
list.add(new Peoson("李四",18));
list.add(new Peoson("王五",20));
list.add(new Peoson("赵六",16));
//对集合中的元素进行排序 传统做法 Comparator: 排序规则接口
Comparator<Peoson> comparator =new Comparator<Peoson>() {
@Override
public int compare(P