1. 程式人生 > >Java8新特性03 Lambda表達式

Java8新特性03 Lambda表達式

表達 string ESS 特性 大括號 ret 方式 表達式 逗號

一. 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會自己解析;一句話也可以用大括號代替,但是必須是完整的語句

Java8新特性03 Lambda表達式