java8 Lambda表达式整理
Lambda表达式
lambda是将一个函数作为一个参数进行传递。
语法
(parameters) -> expression
(parameters) ->{ statements; }
前面是参数,后面是方法的执行体,只有一行代码可以省略花括号,只有一个参数也可以省略参数的括号。
使用范围
只有一个抽象方法的接口中的方法都可以使用lambda表达式进行编写
java8提供的接口
java8内置提供了4个用于lambda的接口
-
predicate接口
-
断言接口,接受一个参数返回一个boolean类型的值,用于判断的时候使用,比如compare
-
boolean test(T t);
-
-
consumer接口
-
消费者接口,接受一个参数不返回值,对参数进行处理,打印之类的操作
-
void accept(T t);
-
-
function<T,R>接口
-
方法处理接口,接受一个任意类型的参数,返回自定义类型的参数
-
R apply(T t);
-
-
supplier接口
-
生产者接口,不接受参数,返回任意类型的值
-
T get();
-
方法引用
-
构造方法的引用:
HashMap::new
==()->new String()
-
特定对象的方法引用
x::toString
==()->x.toString()
-
public void example() { String x = "hello"; function(x::toString); }
-
-
任意对象的实例方法引用
String::toString
==(s) -> s.toString()
-
静态方法引用
String::valueOf
==`(s) -> String.valueOf(s)