[java杂记]java8的lamada 表达式

写在前面, 学习之后的笔记作为复习总结之用,建议参考本文最后的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 test

import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;

public class TestLamada {

    public static void main(String[] args){
        List<String> list = new ArrayList<String>();
        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<String> list2 = list
            .stream()
            .filter( p -> p.length() > 4)
            .collect(Collectors.toList());
        list2.forEach( s -> System.out.println("length:" + s.length())
        );

    }
}

参考

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html

END

posted @ 2017-02-11 16:03  程序员杰诺斯  阅读(399)  评论(0编辑  收藏  举报