Java8新特性03 Lambda表達式
阿新 • • 發佈:2018-09-17
表達 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;View Code5 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 }
1 a 2 b 3 c 4 dView Code
note: 上面的String o1也可以不加String, jvm會自己解析;一句話也可以用大括號代替,但是必須是完整的語句
Java8新特性03 Lambda表達式