Java8新特性03 Lambda表达式

一. Lambda表达式概述

Lambda表达式是Java8中最大的变化。它允许我们将一个函数当作方法的参数,或者说把一段代码当作数据使用。很多基于JVM平台的语言一开始就支持Lambda表达式,比如Scala,但是Java语言一直只能使用匿名内部类来替代Lambda表达式,直到Java8才使用Lambda表达式。

二.定义

Lambda表达式是一个匿名函数,它是一个函数式接口的具体实现方式;使用Lambda语法可以用来代替Java8之前的匿名内部类,从而简化代码。

任意只包含一个抽象方法的接口(函数式接口),我们都可以用来做成Lambda表达式;

三. Lambda表达式语法结构

包含三个部分

(1)参数:一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;

(2)箭头:->

(3)方法体:一个方法体,可以是表达式和代码块,方法体是函数式接口里面方法的实现,如果Lambda的功能语句块太复杂,我们可以使用大括号包起来,跟普通的Java方法一样;

总体结构如下:(parameters)->expression或者(parameters)->{statements;}

四. 具体使用

 1 package com.test.a;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.Comparator;
 6 import java.util.List;
 7 
 8 public class Test {
 9 
10     public static void main(String args[]) {
11         List<String> list=new ArrayList<String>();
12         list.add("d");
13         list.add("a");
14         list.add("c");
15         list.add("b");
16         
17         //法一
18 //        Collections.sort(list, new Comparator<String>() {
19 //
20 //            @Override
21 //            public int compare(String o1, String o2) {
22 //                // TODO Auto-generated method stub
23 //                return o1.compareTo(o2);
24 //            }
25 //            
26 //        });
27         
28         //法二
29 //        Collections.sort(list, (String o1,String o2)->o1.compareTo(o2));
30         //法三
31         Collections.sort(list, (String o1,String o2)->{return o1.compareTo(o2);});
32         for(String a:list)
33         {
34             System.out.println(a);
35         }
36     }
37 }
View Code
1 a
2 b
3 c
4 d
View Code

note: 上面的String o1也可以不加String, jvm会自己解析;一句话也可以用大括号代替,但是必须是完整的语句

猜你喜欢

转载自www.cnblogs.com/Hermioner/p/9662008.html