(Project p1,Project p2)->箭头 p1.getStars().compareTo(p2.getStars())
lambda参数
匿名:
lambda函数不像方法属于某个特定的类,但是和方法一样,有参数列表,函数主体,返回类型,含可能有异常列表,
传递:lambda表达式可以作为参数传递给方法或者存储再变量中。
简洁 :不需要像匿名类一样写很多模板代码。
java8中有效的lambda表达式
1 (String s) ->s.length()
2 (projects a) ->a.getStars() ->1000
3 (int x, int y) ->{
System.out.println("Result:");
System.out.println(x + y);
}
4 ()->42
5 () -> 42 (Project p1,Project p2 ) ->a1.getStars().compareTo(a2.getStars())
// 基本语法
(parames)->expression
或
(parameters) -> {statements;}
在哪里使用以及如何使用Lambda
//在哪里使用Lambda
List<Project> javaProjects = filter(data,(Project p) -> "java".equals(p.getLanguage()));
// 函数式接口
public interface Predicate<T>{
boolean test(T t);
}
//函数式接口:接口只有一个抽象方法.
Runnable r1 = ()->System.out.println("Hellow World 1"); //使用lamda
Runnable r2 = new Runnable() { //使用匿名类
@Override
public void run() {
System.out.println("Hello World 2");
}
}
public static void process(Runnable r){
r.run;
}
// 函数描述符 函数描述符
函数式接口的抽象方法的签名基本上就是Lambda表达式的签名,这种抽象方法叫作函数描述符。
()->void
(Project,Project)->int
public void process(Runnable r){
r.run();
}
process() ->System.out.println(“java 8”);