java1.8新功能 TestLambda表達式

Lambda表達式可以看成是匿名類一點點演變過來

  1. 匿名類的正常寫法

HeroChecker c1 = new HeroChecker() {
public boolean test(Hero h) {
return (h.hp>100 && h.damage<50);
}
};

  1. 把外面的殼子去掉
    只保留方法參數和方法體
    參數和方法體之間加上符號 ->

HeroChecker c2 = (Hero h) ->{
return h.hp>100 && h.damage<50;
};

  1. 把return和{}去掉

HeroChecker c3 = (Hero h) ->h.hp>100 && h.damage<50;

  1. 把 參數類型和圓括號去掉(只有一個參數的時候,才可以去掉圓括號)

HeroChecker c4 = h ->h.hp>100 && h.damage<50;

  1. 把c4作為參數傳遞進去

filter(heros,c4);

例子:

package collection;
      
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
     
import charactor.Hero;
      
public class TestCollection {
    public static void main(String[] args) {
        Random r =new Random();
        List<Hero> heros = new ArrayList<Hero>();
             
        for (int i = 0; i < 10; i++) {
            heros.add(new Hero("hero "+ i, r.nextInt(100), r.nextInt(100)));
        }
        System.out.println("初始化后的集合:");
        System.out.println(heros);
         
        //匿名類
        Comparator<Hero> c = new Comparator<Hero>() {
            @Override
            public int compare(Hero h1, Hero h2) {
                return h1.hp>=h2.hp?1:-1;
            }
        };
         
        //Lambda表達式
        c = (Hero h1, Hero h2)-> {
            return h1.hp>=h2.hp?1:-1;
        };
        //去掉 return和大括號
        c = (Hero h1, Hero h2)->h1.hp>=h2.hp?1:-1;
        //去掉 參數類型       
        c = (h1, h2)->h1.hp>=h2.hp?1:-1;
        //有兩個參數,無法去掉圓括號
        Collections.sort(heros,c);
         
        //直接把Lambda表達式作為參數傳進去
        Collections.sort(heros,(h1, h2)->h1.hp>=h2.hp?1:-1);
        System.out.println(heros);
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,048評論 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,719評論 0 3
  • 一、Python簡介和環境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,808評論 0 10
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,890評論 0 38
  • 官網 中文版本 好的網站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,438評論 0 5