精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文搞懂Java中的lambda匿名函數(shù)

開發(fā) 前端
Lambda函數(shù),也稱為Lambda表達(dá)式,是Java 8版本新增的一項(xiàng)功能。它提供了一種簡(jiǎn)潔的方式來定義小型匿名函數(shù),這些函數(shù)可以作為參數(shù)傳遞給其他方法或作為返回值使用。

1 Lambda表達(dá)式

Lambda函數(shù),也稱為Lambda表達(dá)式,是Java 8版本新增的一項(xiàng)功能。它提供了一種簡(jiǎn)潔的方式來定義小型匿名函數(shù),這些函數(shù)可以作為參數(shù)傳遞給其他方法或作為返回值使用。

語法:

Lambda表達(dá)式可以使用這個(gè)語法->來表示。

示例:

零參數(shù):() -> expression

interface PrintInfo {
  void print();
 }

 class TestLambda {
  
    static void printJob(PrintInfo printInfo) { 
      printInfo.print(); 
    }
  
    public static void main(String[] args) {
       printJob(() -> System.out.println("We're learning Java 8 fundamentals !"));
    }
 }

Output: We’re learning Java 8 fundamentals !

一個(gè)參數(shù):parameter -> expression

interface PrintInfo {
  void print(String data);
 }

 class TestLambda {

  static void printJob(PrintInfo printInfo, String data) {
   printInfo.print(data);
  }

  public static void main(String[] args) {
   printJob(statement -> System.out.println("We're learning " + statement), "Lambda");
  }
 }

Output: We're learning Lambda

多個(gè)參數(shù):(parameter1, parameter2) -> expression

interface PrintInfo {
  void print(String data1, String data2);
 }

 class TestLambda {

  static void printJob(PrintInfo printInfo, String data1, String data2) {
   printInfo.print(data1, data2);
  }

  public static void main(String[] args) {
   printJob((statement1, statement2) -> System.out.println("We're learning " + statement1 + " and "+ statement2), "Lambda", "it's uses");
  }
 }

Output: We're learning Lambda and it's uses

復(fù)雜表達(dá)式:(parameter1, parameter2) -> { complex code block }

interface PrintInfo {
  void print(String data1, String data2);
}

 class TestLambda {

  static void printJob(PrintInfo printInfo, String data1, String data2) {
     printInfo.print(data1, data2);
  }

  public static void main(String[] args) {
     printJob((statement1, statement2) -> {
        System.out.println("We're learning " + statement1 + " and "+ statement2);
        System.out.println("This is a multi line lambda");
        System.out.println("This is a complex lambda implementation");
       }, 
        "Lambda",
        "it's uses"
      );
   }
 }

Output: We’re learning Lambda and it’s uses

This is a multi line lambda

This is a complex lambda implementation

2 方法引用

方法引用是一種緊湊、易讀的Lambda表達(dá)式,用于已經(jīng)具有名稱的方法。簡(jiǎn)單地說,我們可以使用方法引用從Lambda函數(shù)中調(diào)用方法。

語法:

Object::method

讓我們來看看如何使用Lambda打印列表中的元素:

public void print(List<String> list) {
    list.forEach(l -> System.out.println(l));
}

可以使用方法引用,如下所示:

public void print(List<String> list) {
    list.forEach(System.out::println);
}

如您所見,這使代碼更加清晰、精確和易于閱讀。

同樣地,我們可以使用Classname::methodName來表示對(duì)靜態(tài)方法的調(diào)用。

public static void main(String[]args){
    List<String> fruits = new ArrayList<>();
    fruits.add("mango");
    fruits.add("banana");
    fruits.add("kiwi");
    fruits.add("orange");

    fruits.forEach(Test::process);
}

private static void process(String value) {
    System.out.println("processed fruit: " + value);
}

同時(shí),我們可以使用Object to be instantiated::new來使用方法引用引用構(gòu)造函數(shù)。

public static void main(String[]args){
      List<String> fruits = new ArrayList<>();
      fruits.add("mango");
      fruits.add("banana");
      fruits.add("kiwi");
      fruits.add("orange");

      fruits.stream()
              .map(Fruit::new)
              .toArray(Fruit[]::new);
}

class Fruit {
    public Fruit(String name) {
        this.name = name;
    }
}

方法引用也可以用于Comparator。

按名稱對(duì)水果列表排序:

public static void process(List<Fruit> fruits) {
    fruits.stream()
            .sorted(Comparator.comparing(Fruit::getName))
            .forEach(System.out::println);
}

3 Lambda的不同用途

遍歷列表

public static void main(String[] args) {
   List<String> fruits = List.of("mango", "oranges", "banana", "kiwi", "apple");
   fruits.forEach(fruit -> System.out.println(fruit));
}

遍歷Map

public static void main(String[] args) {
   Map<String, Integer> map = new HashMap<>();
   map.put("value1", 10);
   map.put("value2", 20);
   map.put("value3", 30);
   map.put("value4", 40);
   map.forEach((key, value) -> System.out.println("key: " + key + ", value: " + value));
  }

創(chuàng)建Runnable和Callable

Runnable是一個(gè)函數(shù)式接口,因此我們可以使用Lambda表達(dá)式來表示它。

使用匿名類創(chuàng)建Runnable的典型方式

public static void main(String[] args) {
  Runnable runnable = new Runnable() {
     @Override
     public void run() {
        System.out.println("Hello World !");
     }
  };
}

同樣的Lambda表達(dá)式實(shí)現(xiàn)如下:

public static void main(String[] args) {
  Runnable runnable = () -> System.out.println("Hello World !");
}

同樣地,Callable也可以實(shí)現(xiàn):

public static void main(String args[]) throws InterruptedException {
    Callable<Integer> callable = () -> {
      int sum = 0;
      for (int i = 0; i < 5; i++) {
        sum += i;
      }
      return sum;
    };
}

Predicate

使用Lambda函數(shù)表示Predicate:

public class HelloWorld{

     public static void main(String []args){
        Predicate<Integer> predicate = (i) -> i > 10;
        System.out.println(predicate.test(15));
     }
}

Output: True

Consumer

使用Lambda函數(shù)表示Consumer:

public class HelloWorld{

     public static void main(String []args){
       //例1
        Consumer<Integer> consumer = System.out::println;
        consumer.accept(10);

       //例2
        List<String> inputs = new ArrayList<>();
        Consumer<String> consumer = str -> inputs.add(str);
        consumer.accept("first");
        consumer.accept("second");
        inputs.forEach(e -> System.out.println(e));
     }
}

Example 1 output: 10,Example 2 output: first \n second

Comparator

Comparator是Java中的一個(gè)函數(shù)式接口,因此我們可以使用Lambda函數(shù)來表示它。

下面我們使用Lambda創(chuàng)建一個(gè)Comparator:

public static void process(List<Movie> movies) {
    Comparator<Movie> movieComparator = (m1, m2) -> m1.getRating() - m2.getRating();
    movies.sort(movieComparator);
}

讓我們看看更多的例子:

按自然順序排序數(shù)字列表:

private static void process(List<Integer> numbers) {
    numbers.stream()
            .sorted(Comparator.naturalOrder())
            .forEach(System.out::println);
}

如果我們要根據(jù)多個(gè)參數(shù)對(duì)列表進(jìn)行排序,則可以使用Comparator的thenComparing方法,如下所示:

private static void process(List<Movie> movies) {
    movies.stream()
            .sorted(Comparator.comparing(Movie::getName)
                    .thenComparing(Movie::getRating)
            )
            .forEach(System.out::println);
}

將排序后的列表反轉(zhuǎn):

private static void process(List<Movie> movies) {
    movies.stream()
            .sorted(Comparator.comparing(Movie::getName)
            .thenComparing(Movie::getRating)
            .reversed())
            .forEach(System.out::println);
}

4 總結(jié)

本文中,我們探討了Lambda函數(shù),看了很多不同的Lambda函數(shù)的例子,我們還了解了如何使用方法引用和Comparator。

責(zé)任編輯:武曉燕 來源: Java學(xué)研大本營
相關(guān)推薦

2023-07-04 08:56:07

指針類型Golang

2021-09-07 09:46:40

JavaScriptGenerator函數(shù)

2024-11-19 13:20:55

2024-04-12 12:19:08

語言模型AI

2022-03-24 08:51:48

Redis互聯(lián)網(wǎng)NoSQL

2021-12-29 17:38:17

JavaScripttypeof前端

2021-03-22 10:05:59

netstat命令Linux

2023-09-08 08:20:46

ThreadLoca多線程工具

2023-09-15 12:00:01

API應(yīng)用程序接口

2021-09-11 10:41:27

PythonPickle模塊

2023-04-12 08:38:44

函數(shù)參數(shù)Context

2022-05-05 16:47:24

Docker網(wǎng)絡(luò)空間容器

2020-05-15 16:37:13

PowerBI數(shù)據(jù)分析

2023-04-03 15:04:00

RPCPHP語言

2023-08-24 16:50:45

2024-06-05 11:43:10

2022-08-15 15:39:23

JavaScript面向?qū)ο?/a>數(shù)據(jù)

2020-03-18 14:00:47

MySQL分區(qū)數(shù)據(jù)庫

2019-11-19 08:00:00

神經(jīng)網(wǎng)絡(luò)AI人工智能

2022-06-07 10:13:22

前端沙箱對(duì)象
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美日韩福利电影| 欧美日韩中文另类| 久热国产精品视频一区二区三区| 欧美日韩一级黄色片| 欧美独立站高清久久| 欧美一区二区久久| 成人在线免费观看av| 香蕉视频国产在线观看| 国产激情一区二区三区桃花岛亚洲| 久久久久久久亚洲精品| 色一情一交一乱一区二区三区| 24小时成人在线视频| 精品国产精品自拍| 亚洲一区尤物| 欧洲天堂在线观看| 国产福利不卡视频| 国产成人精品免费久久久久| 一区二区视频免费看| 国产a久久精品一区二区三区 | 中文字幕中文字幕在线一区 | 亚洲一区二区三区中文字幕在线| 青娱乐国产91| 人妻少妇一区二区三区| 激情综合色综合久久| 欧美一级大片视频| 国产精品二区一区二区aⅴ| 日韩在线欧美| 亚洲视屏在线播放| 美女黄色一级视频| 久久69av| 欧美日韩高清一区二区不卡| 久久久久久久久久久久久国产精品| 天天干在线视频论坛| 国产精品少妇自拍| 品久久久久久久久久96高清| 风流少妇一区二区三区91| 激情图片小说一区| 国产精品永久在线| 成人黄色片在线观看| 性欧美videos另类喷潮| 国语自产精品视频在线看一大j8 | 在线观看亚洲成人| 日日橹狠狠爱欧美超碰| а_天堂中文在线| 一区二区三区四区av| 黄色高清视频网站| 日本高清中文字幕在线| 国产精品美女久久久久久久久久久 | 欧美一级黄视频| 久久久噜噜噜久久狠狠50岁| 欧美亚洲视频在线看网址| 日干夜干天天干| 亚洲第一黄色| 国模吧一区二区三区| 久久精品免费av| 欧美涩涩网站| 久久久亚洲精选| 国产无码精品久久久| 精品电影一区| 97色在线视频| 一级黄色在线视频| 日韩激情一区二区| 国产精品视频大全| 国产又爽又黄免费软件| 国内精品视频666| 7777精品久久久大香线蕉小说| 国产激情久久久久久熟女老人av| 国产精品一区三区| 国产精品国产三级国产专区53 | 男人午夜免费视频| 久久精品30| 国产精品日韩在线| 一级特黄录像免费看| 国产一区二区三区观看| 成人91视频| 青青青草原在线| 亚洲国产精品成人综合色在线婷婷| 午夜视频久久久| 高清免费电影在线观看| 亚洲一区二区三区爽爽爽爽爽| 99视频在线免费播放| 国模一区二区| 日韩欧美一区在线| 国产黄色三级网站| 国产最新精品| 久久激情五月丁香伊人| 国产亚洲第一页| 香蕉视频成人在线观看| 国产乱肥老妇国产一区二| 精品黑人一区二区三区在线观看 | 老**午夜毛片一区二区三区| 国产日韩欧美在线看| 国产美女免费看| 99免费精品在线| 亚洲蜜桃av| 欧美xxxx做受欧美88bbw| 日韩欧美亚洲综合| 999久久久精品视频| 欧洲在线一区| 久热国产精品视频| 亚洲国产av一区二区三区| 精品无人码麻豆乱码1区2区 | 欧美久久一区| 奇米成人av国产一区二区三区| 亚洲天堂avav| 97久久精品人人澡人人爽| 亚洲视频在线观看日本a| 超碰中文在线| 制服.丝袜.亚洲.另类.中文| 亚洲欧美日本一区| 一区二区国产在线| 国产v综合v亚洲欧美久久| 午夜精品久久久久久久爽| 亚洲国产精品成人综合色在线婷婷| 国产精彩视频一区二区| 成人亚洲免费| 日韩av综合网| 欧美片一区二区| 看片网站欧美日韩| 日本一区不卡| 美女扒开腿让男人桶爽久久软| 91精品国产综合久久久久久久久久| 波多野结衣加勒比| 欧美片第1页综合| 国产日韩亚洲欧美| 国产人成在线视频| 一本久道久久综合中文字幕 | 999精品网站| 久久99国产精品久久99大师| 欧美成人三级视频网站| 一区二区国产欧美| 中文字幕乱码亚洲精品一区| 哪个网站能看毛片| 欧洲精品一区| 91精品国产一区| 全部免费毛片在线播放一个| 亚洲欧美日韩国产手机在线| 91小视频网站| 欧美日中文字幕| 国产激情久久久久| 欧美zzoo| 91久久线看在观草草青青 | 亚洲伊人春色| 69精品小视频| 午夜视频在线播放| 欧美日韩一二三四五区| 国产肉体xxxx裸体784大胆| 亚洲精品日本| 久久99导航| 亚洲风情在线资源| 亚洲老头同性xxxxx| 亚洲天堂一区在线观看| 91年精品国产| 国产成人无码av在线播放dvd| 五月国产精品| 国产成人自拍视频在线观看| 懂色av中文在线| 欧美性videosxxxxx| 免费看日本黄色片| 麻豆国产精品官网| 日本一区二区三区四区五区六区| 精品一区视频| 久久久最新网址| 十九岁完整版在线观看好看云免费| 精品久久久久久亚洲国产300| 女尊高h男高潮呻吟| 久久av一区| 亚洲欧美99| 视频精品国内| 91chinesevideo永久地址| 欧美3p视频在线观看| 欧美性xxxxxxxx| 私库av在线播放| 99久久婷婷国产综合精品| 91av在线免费播放| 五月天综合网站| 国产精品国产亚洲精品看不卡15| sis001欧美| 久久久国产精品x99av | av免费看网址| 久草成人资源| 成人午夜高潮视频| 国产夫妻在线| 中文字幕在线视频日韩| 国产成人毛毛毛片| 日韩欧美一区二区在线| 日本成人精品视频| 成人av网站在线观看| 北条麻妃av高潮尖叫在线观看| 婷婷综合伊人| 国产一区二区三区奇米久涩| 日韩不卡在线| 欧美极品少妇xxxxⅹ免费视频| 裸体xxxx视频在线| 91精品一区二区三区在线观看| 天海翼一区二区| 中文字幕在线不卡| 久久久久麻豆v国产精华液好用吗| 捆绑调教一区二区三区| 亚洲欧洲日产国码无码久久99| 97精品视频在线看| 久久综合久久综合这里只有精品| 国产日韩欧美中文在线| 日韩av不卡在线| 亚洲七七久久综合桃花剧情介绍| 亚洲欧美在线磁力| 亚洲第一视频在线| 欧美日韩精品二区第二页| 日韩久久精品视频| 亚洲视频一区在线| 欧美成人国产精品一区二区| www.亚洲色图.com| 黄色a级三级三级三级| 久久综合九色综合欧美狠狠| 欧美大黑帍在线播放| 欧美成人自拍| 日本一区二区在线视频| 卡通动漫精品一区二区三区| 91老司机精品视频| 国产精品久久久久久久久久齐齐| 91黑丝高跟在线| 黄页网站大全在线免费观看| 久久国内精品一国内精品| 国产鲁鲁视频在线观看免费| 日韩h在线观看| 亚洲va天堂va欧美ⅴa在线| 欧美日韩极品在线观看一区| 美女黄页在线观看| 色婷婷一区二区三区四区| 日本一区二区不卡在线| 亚洲最快最全在线视频| 成人自拍小视频| 国产精品你懂的| 亚洲一级片在线播放| 国产欧美一区二区三区在线看蜜臀| 亚洲专区区免费| 99r国产精品| 美女又爽又黄免费| 成人午夜电影小说| 日本美女视频网站| 粉嫩嫩av羞羞动漫久久久 | 黄色国产精品视频| 国产欧美日韩亚洲一区二区三区| 日韩精品一区二区在线视频| 国产一区视频在线观看免费| 国产性生活免费视频| 国产精品观看| 91精品国产91久久久久麻豆 主演| 午夜精品剧场| 久青草视频在线播放| 国内精品久久久久久久97牛牛| 亚洲高潮无码久久| 欧美久久视频| 欧美黑人经典片免费观看| 最新国产拍偷乱拍精品 | 黄色片在线观看网站| 亚洲色图都市小说| 国产盗摄x88av| 亚洲一级二级在线| 日本在线免费观看| 日韩欧美精品网址| 亚洲一级片免费看| 91精品一区二区三区在线观看| 精品国自产在线观看| 亚洲а∨天堂久久精品9966| 水中色av综合| 中文字幕久久亚洲| 97影院秋霞午夜在线观看| 欧美激情手机在线视频 | 国产视频在线播放| 欧美肥臀大乳一区二区免费视频| 波多野结衣中文在线| 欧美在线视频在线播放完整版免费观看| 一根才成人网| 国产欧美在线视频| 91久久偷偷做嫩草影院电| 九色一区二区| 久久一区二区三区电影| 国产91视频一区| 亚洲免费在线| 不卡的在线视频| 成人av电影免费在线播放| 久久精品无码一区| 亚洲欧美日韩电影| 亚洲精品1区2区3区| 精品视频一区二区不卡| 亚洲伦理在线观看| 亚洲欧洲日本专区| 69成人在线| 日韩美女视频中文字幕| 国产95亚洲| 欧美极品色图| 欧美激情视频一区二区三区免费| 国产男女在线观看| 国产一区二区久久| 无码h肉动漫在线观看| 亚洲免费观看高清完整版在线观看| 国产精品美女久久久久av爽| 欧美高清视频在线高清观看mv色露露十八| 男人天堂一区二区| 日韩在线播放一区| 在线最新版中文在线| 亚洲va国产va天堂va久久| 在线视频亚洲专区| 国产精品igao激情视频| 日本女优在线视频一区二区| 中文字幕乱视频| ...av二区三区久久精品| av资源免费观看| 日韩欧美国产精品一区| youjizz在线播放| 68精品久久久久久欧美| 一区二区三区国产好| 亚洲精品二区| 久久婷婷av| 国产成人无码一区二区在线观看| 亚洲欧美国产毛片在线| 中文天堂在线播放| 亚洲精品一区二区三区不| 国产精品蜜臀| 99re国产视频| 亚洲国产老妈| 第一区免费在线观看| 久久久.com| 国产美女激情视频| 亚洲精品mp4| 好看的中文字幕在线播放| 91亚洲午夜在线| 日韩欧美精品综合| chinese少妇国语对白| 久久影院午夜论| 国产女同在线观看| 精品久久久久久综合日本欧美 | 久久91成人| 男人操女人逼免费视频| 成人国产在线观看| 欧美人妻一区二区| 欧美www视频| 国产天堂在线播放视频| 成人自拍偷拍| 午夜国产欧美理论在线播放 | 欧美黑人性视频| 蜜桃精品视频| 国产尤物av一区二区三区| 国产精品一二三四五| 99热精品免费| 精品久久久久久久久久久久久久久久久 | 六月丁香婷婷在线| 99国产精品久| 日韩熟女一区二区| 在线不卡国产精品| 亚洲欧美久久精品| 国产麻豆电影在线观看| 国产最新精品免费| 久久久全国免费视频| 欧美成人aa大片| 国产无遮挡裸体视频在线观看| 久久96国产精品久久99软件| 久久久国产精品一区二区中文| av女人的天堂| 欧美日韩亚洲综合在线| 黄色在线免费看| 国产精品免费一区二区三区| 99精品免费| 性欧美精品男男| 91.麻豆视频| heyzo高清中文字幕在线| 农村寡妇一区二区三区| 日本欧美一区二区| 人妻久久一区二区| 亚洲国产欧美一区二区丝袜黑人 | 亚洲精品系列| 国产123在线| 欧美一区二区三区爱爱| 成人一级福利| 香蕉久久夜色| 国产98色在线|日韩| 丰满人妻老熟妇伦人精品| 中文字幕亚洲综合久久| 99re6热只有精品免费观看| 国产三区在线视频| 日韩美女久久久| 天堂在线观看av| 国产精品亚洲综合天堂夜夜| 黄色欧美日韩| 免费一级特黄3大片视频| 日韩精品一区二区三区视频| av电影一区| 91视频成人免费| 久久久久久亚洲综合| 国产日韩在线观看一区| 2019最新中文字幕| 中文字幕一区二区三区乱码图片 | 欧美美乳视频| 国产调教打屁股xxxx网站| 欧美性生交xxxxx久久久| 国产一二区在线观看| 麻豆亚洲一区| 国产成人av一区二区三区在线| 亚洲精品无码久久久久|