1.目的:简化代码
2.总结:注意lamdba的规范,常量参数,实现接口
package lamdmademo;
import java.time.LocalDate;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Demo demo=new Demo();
//lambda表达式
Integer num=2;
Converter<String,Integer> s=(param)-> System.out.println(param+num);
s.convert(3);
LocalDate date=LocalDate.now();
System.out.println(date);
//使用lambda排序
List<String> list= new ArrayList<>();
List<String> list2= new ArrayList<>();
list.add("hvfds");
list.add("abref");
list.add("csdrv");
list.add("bbsrd");
list2.add("hasrdb");
list2.add("aasrb");
list2.add("carsb");
list2.add("barvb");
//使用java7排序
System.out.println("使用java7排序");
demo.sortUsingjdk7(list);
//使用java8排序
System.out.println("使用java8排序");
demo.sortUsingjdk8(list2);
System.out.println(list);
System.out.println(list2);
//lambda实现接口的方法
MathOperation additional=(Integer s1,Integer s2)-> s1+s2 ;
MathOperation device=(Integer s1,Integer s2)->s1/s2;
MathOperation sub=(Integer s1, Integer s2)->s1-s2;
//调取operate方法
System.out.println("10+5="+demo.operate(10,5,additional));
System.out.println("10/5="+demo.operate(10,5,device));
System.out.println("10-5="+demo.operate(10,5,sub));
//定义变量,两种情形,一变量声明为final,另一种变量可以不用final声明,但之后不能进行修改
final String hello="HELLO,";
//实现接口方法
SayHello sayHello=message -> System.out.println(hello+message);
//调用方法
sayHello.sayMessage("JDK8");
}
//使用java7排序
//匿名内部类相当于接口实现
public void sortUsingjdk7(List<String> list){
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
}
// 使用 java 8 排序
public void sortUsingjdk8(List<String> list){
Collections.sort(list,(s1,s2) -> s1.compareTo(s2));
}
//接口一
interface MathOperation {
int operation(Integer a, Integer b);
}
//接口二
interface SayHello{
void sayMessage(String message);
}
//接口三
interface Converter<T1,T2> {
void convert(int i);
}
//使用接口一的方法
private int operate(Integer a,Integer b,MathOperation mathOperation){
return mathOperation.operation(a,b);
}
}