写在前面, 学习之后的笔记作为复习总结之用,建议参考本文最后的oracle的教程,并进行实践.
lamda表达式是java 8添加的新特性,
- 可以给给collection的foreach,map,filter等方法提供方便支持.- 可以配合functional interface(只有一个方法的接口) 使用, java.util.function提供了一些这样的接口- 替换匿名内部类(这些匿名内部类,其实也是函数是接口的类实现)- lamada表达式传参,使得很多方法更灵活,代码可以复用,避免boilerplate code
lamada表达式的语法如下
(int x, int y) -> x +y
Argument list 参数列表 arrow token 箭头 statement block or expression 语句块或者表达式
一个参数的时候,可以不写括号,可以不写类型.
例如下:
package testimport java.util.List;import java.util.ArrayList;import java.util.stream.Collectors;public class TestLamada { public static void main(String[] args){ Listlist = new ArrayList (); list.add("longstring"); list.add("secondString"); list.add("lol"); // print each member list.forEach((String s) -> System.out.println("member:" + s)); // print member whose length longer than 4; List list2 = list .stream() .filter( p -> p.length() > 4) .collect(Collectors.toList()); list2.forEach( s -> System.out.println("length:" + s.length()) ); }}