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; } }