Java 8新特性:lambda表达式
作者:binlambda 表达式是 java 8th 给我们带来的几个重量级新特性之一,借用 lambda 表达式可以让我们的程序设计更加简洁。
lambda 表达式定义为一种 简洁、可传递的匿名函数,按如下格式:
- 1、参数列表 -> 表达式
- 2、参数列表 -> {表达式集合}
例如:
(String s) -> s.length();
lambda表达式隐藏了return,但是在表达式集合式和中要用到return
(int x, int y) -> {
int z = x * y ;
reutrn z + x;
}
基于函数式接口使用 lambda 表达式
下面是一个自定义函数式接口:
@FunctionalInterface
public interface TestLambda{
boolean isLongName(String name)
}
jdk 自带的函数式接口:
其中最典型的三个接口是Predicate、Consumer,以及Function
Predicate可以用来过滤,Function类似map,Consumer用于消费
例如我们通常对一个数组对象进行遍历,排序,删除一些不需要对元素,以下有一个demo,sorted类似map,forEach就是消费:
package test;
import java.util.*;
public class Test {
public static void main(String[] args) {
System.out.print("start");
List list = Arrays.asList(
new Apple(1),
new Apple(2),
new Apple(7),
new Apple(3),
new Apple(9)
);
list.stream().sorted(Comparator.comparing(Apple::getWeight)).forEach(
each -> {
System.out.print(each.weight);
}
);
}
}
class Apple{
public int weight;
Apple(int w){
this.weight = w;
}
public int getWeight(){
return this.weight;
}
}