Java8-------Lambda表达式

概念

可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。这个定义够大的,让我们慢慢道来。
 匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多!
 函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表。
 传递——Lambda表达式可以作为参数传递给方法或存储在变量中。
 简洁——无需像匿名类那样写很多模板代码。


有效的Lambda表达式

第一个Lambda表达式具有一个String类型的参 数并返回一个int。Lambda没有return语句,因为已经隐含了return
1. (String s) -> s.length()
第二个Lambda表达式有一个Apple类型的参数并返回一个boolean(苹果的重量是否超过150克)
2.(Apple a) -> a.getWeight() > 150
3.第三个Lambda表达式具有两个int类型的参数而没有返回值(void返回)。注意Lambda表达式可以包含多行语句,这里是两行
3.(int x, int y) -> {
    System.out.println("Result:");
    System.out.println(x+y);
}
第四个Lambda表达式没有参数,返回一个int
4.() -> 42
第五个Lambda表达式具有两个Apple类型的参数,返回一个int:比较两个Apple的重量
5.(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())

       Function<String, Integer> X= new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return Integer.parseInt(s);
            }
        };

        Function<String, Integer> XX = (String s) -> Integer.parseInt(s);

        Function<String, Integer> XXX = Integer::parseInt;
        Function<Integer, Apple> c1 = new Function<Integer, Apple>() {
            @Override
            public Apple apply(Integer weight) {
                return new Apple(weight);
            }
        };
        Apple a1 = c1.apply(100);


        Function<Integer, Apple> c2 = Apple::new;
        Apple a2 = c2.apply(110);

        Function<Integer, Apple> c3 = (weight) -> new Apple(weight);
        Apple a3 = c3.apply(110);
        ArrayList<Apple> list = new ArrayList<>();
        list.sort(new Comparator<Apple>() {
            @Override
            public int compare(Apple o1, Apple o2) {
                return o1.getWeight().compareTo(o2.getWeight());
            }
        });

        list.sort((Apple o1,Apple o2) -> o1.getWeight().compareTo(o2.getWeight()));
        list.sort((o1,o2) -> o1.getWeight().compareTo(o2.getWeight()));

        //Comparator<Apple> c = Comparator.comparing((Apple a) -> a.getWeight());
        list.sort(Comparator.comparing((a) -> a.getWeight()));
        list.sort(Comparator.comparing(Apple::getWeight));

关于复合Lambda 表达式,后面再讲,Lambda 表达式理解起来感觉有点费劲,以后理解了在详细描述.

阅读更多
文章标签: java8
个人分类: java8
想对作者说点什么? 我来说一句

表达式求值表达式求值

2009年04月17日 4KB 下载

javaJSTL_EL表达式

2009年07月26日 65B 下载

el 表达式el 表达式el 表达式

2011年01月14日 495KB 下载

jspEL表达式和el

2008年11月04日 559KB 下载

正规表达式,正规表达式

2009年04月07日 35KB 下载

ognl表达式 ognl表达式

2010年04月07日 10KB 下载

变量、运算符、表达式

2009年07月06日 51KB 下载

没有更多推荐了,返回首页

不良信息举报

Java8-------Lambda表达式

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭