精品欧美一区二区三区在线观看 _久久久久国色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)

国产精品12p| 九九热精品视频| 日韩a在线播放| 日色在线视频| 麻豆成人久久精品二区三区红| 中文字幕成人在线| 中文字幕视频观看| 456成人影院在线观看| 亚洲人成精品久久久久| 久久av一区二区| 欧美激情网站在线观看| 黄黄视频在线观看| 色婷婷av一区二区三区之红樱桃 | 亚欧精品在线| 亚洲国产999| 日韩电影在线观看网站| 欧美多人爱爱视频网站| 久久久久久久毛片| 精品三级av在线导航| 欧美四级电影在线观看| 18禁网站免费无遮挡无码中文| 国产黄色片在线观看| 国产suv精品一区二区三区| 欧洲成人性视频| 亚洲国产精品免费在线观看| 蜜臀91精品国产高清在线观看| 欧美一区二区视频网站| 亚洲少妇久久久| 91av久久| 一区二区三区在线视频观看| 亚洲精品第一区二区三区| 蜜臀久久精品久久久久| 国产在线视频不卡二| 国产成人综合久久| 一区二区三区福利视频| 欧美日韩国产精品一区二区亚洲| 正在播放欧美视频| 欧美黄色激情视频| 日韩高清一级| 亚洲精品二三区| 国产亚洲精品成人a| **欧美日韩在线| 欧美人成免费网站| 天天爱天天操天天干| 性欧美又大又长又硬| 夜色激情一区二区| 国产精品无码电影在线观看| 免费av在线网站| 国产精品午夜在线观看| 欧美激情论坛| 黄色片免费在线| 久久精品亚洲精品国产欧美 | 中文字幕在线不卡视频| 小说区图片区图片区另类灬| 亚洲丝袜在线观看| 三级视频在线播放| 成人av手机在线观看| 粉嫩av免费一区二区三区| 中文字幕日本视频| 奇米影视7777精品一区二区| 国产不卡视频在线| 亚洲第一区av| 蜜桃视频免费观看一区| 国产中文日韩欧美| 97视频免费在线| 国产高清不卡一区二区| 99国产高清| 手机在线不卡av| 99re亚洲国产精品| 欧美日韩在线精品一区二区三区| 青青草免费在线| 中文字幕欧美国产| 在线观看欧美激情| av网站大全在线| 性做久久久久久| 欧美污视频网站| 欧美91在线|欧美| 69成人精品免费视频| 美女被艹视频网站| 国内精品偷拍| 国产一区二区久久精品| 人人澡人人澡人人看| 亚洲天堂男人| 日本最新高清不卡中文字幕| 一区二区三区在线免费观看视频 | 国产三级三级在线观看| 精品一区二区三区的国产在线播放| 成人中文字幕+乱码+中文字幕| av中文在线观看| 91在线精品一区二区| 奇米视频888战线精品播放| 欧美三级黄网| 亚洲一区二区欧美| 老司机午夜av| 九九九九九九精品任你躁| 亚洲黄一区二区| 国产一区二区三区四区在线| 欧美一区免费| 青青在线视频一区二区三区| 在线观看视频二区| 99精品视频一区| 亚洲在线播放电影| а√天堂8资源中文在线| 在线亚洲精品福利网址导航| 久久精品无码一区二区三区毛片| 老司机精品视频在线播放| 丝袜美腿精品国产二区| 成人免费区一区二区三区| 麻豆91精品91久久久的内涵| 久久riav二区三区| av网站在线免费看推荐| 欧亚洲嫩模精品一区三区| 无码国产精品一区二区免费式直播 | 欧美日韩国产色| 亚洲成人手机在线观看| 蜜乳av综合| 国产69精品久久久久9999| 又污又黄的网站| 99re热这里只有精品免费视频 | 成人在线视频免费播放| 希岛爱理av一区二区三区| 日本电影亚洲天堂| 蜜臀av在线观看| 樱花草国产18久久久久| 国产亚洲欧美日韩在线一区| 天堂资源在线亚洲资源| 国产精品xx| 日韩欧美一卡二卡| 老司机成人免费视频| 视频一区二区三区入口| 国产日韩欧美一区二区三区四区| 很黄的网站在线观看| 欧美日韩综合在线| 一级片手机在线观看| 亚洲精品乱码| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 欧美视频在线观看视频| www.91精品| 中文字幕日韩av综合精品| 无码人妻丰满熟妇精品区| 99精品视频在线免费观看| 男人天堂av片| а√中文在线天堂精品| 久久久久久久久91| 亚洲国产欧美另类| 亚洲综合久久av| 特级特黄刘亦菲aaa级| 欧美日韩网站| av在线不卡一区| 欧美色图天堂| 精品盗摄一区二区三区| 激情五月少妇a| 国产91丝袜在线播放九色| 精品免费久久久久久久| 一区二区三区亚洲变态调教大结局| 久久久精品视频在线观看| 国产精品久久婷婷| 亚洲男帅同性gay1069| 亚洲国产欧美91| 欧美日韩亚洲一区三区 | 婷婷成人在线| 日本一区二区在线播放| 国产在线一在线二| 欧美日韩一级片在线观看| 后入内射无码人妻一区| 国产精品综合一区二区三区| 亚洲国产一二三精品无码| 大型av综合网站| 51色欧美片视频在线观看| 国产三级在线观看| 欧美高清性hdvideosex| 欧美成人精品激情在线视频| 国产成人精品一区二| 国产精品无码av在线播放| 伊人久久综合影院| 国产欧美欧洲在线观看| caopo在线| 亚洲精品一线二线三线无人区| 亚洲日本韩国在线| 欧美国产精品v| www.色就是色.com| 亚洲成人直播| 欧美一区二区精品在线| 青草全福视在线| 高潮按摩久久久久久av免费| 欧美主播福利视频| 1pondo在线播放免费| 欧美一区二区三区免费视频| 国产真实夫妇交换视频| 久久久午夜精品理论片中文字幕| wwwwwxxxx日本| 欧美亚韩一区| 日韩av一区二区三区美女毛片| 97精品资源在线观看| 久久久久在线观看| av网在线观看| 精品1区2区在线观看| www.五月婷婷.com| 一区二区三区资源| 日本乱子伦xxxx| 国产高清一区日本| 粗暴91大变态调教| 激情欧美一区二区三区| 日韩精品欧美在线| 视频一区日韩| 国产精品一区二区三区久久久| 麻豆av在线免费观看| 中文字幕精品久久| 午夜福利视频一区二区| 91精品国产综合久久香蕉的特点| 日韩在线视频免费播放| 亚洲精品五月天| 国产传媒国产传媒| 成av人片一区二区| 日本美女久久久| 日韩高清不卡一区| 九一国产精品视频| 欧美 亚欧 日韩视频在线 | 久久国产影院| 久久久一本精品99久久精品| 视频一区日韩| 91在线网站视频| 深夜视频一区二区| 欧美亚洲日本黄色| 国产精品一区hongkong| 成年无码av片在线| 在线观看完整版免费| 亚洲毛片一区二区| 少妇人妻一区二区| 欧美不卡一区二区三区四区| 一个人看的www日本高清视频| 欧美性生交大片免费| 国产精品a成v人在线播放| 亚洲精品日韩综合观看成人91| youjizz亚洲女人| 久久久亚洲高清| 自拍偷拍中文字幕| 91免费国产在线| 波多野结衣av在线免费观看| 成人自拍视频在线| 亚洲欧洲日韩综合| 国产精品一二三在| 性鲍视频在线观看| 国产伦精品一区二区三区视频青涩| 最新天堂中文在线| 蜜桃视频在线观看一区| 国产九九在线观看| 伊人网在线视频观看| 日韩av一区二| 91最新在线观看| 日韩av中文字幕一区二区| 国产一级不卡毛片| 日本在线观看不卡视频| 狠狠热免费视频| 日本欧美一区二区| 亚洲xxxx2d动漫1| 精品一区二区三区在线观看 | 动漫性做爰视频| 亚洲激情图片qvod| 欧美日韩国产精品一区二区三区| 一区二区三区在线不卡| 久久久久久久黄色| 性做久久久久久久久| 国产一级片毛片| 欧美曰成人黄网| 91麻豆国产在线| 精品美女在线播放| 欧日韩在线视频| 日韩va亚洲va欧洲va国产| 日本视频在线观看一区二区三区| 精品视频久久久| √新版天堂资源在线资源| 久久视频在线直播| 免费在线国产视频| 91精品国产高清久久久久久91| 老司机2019福利精品视频导航| 国产精品久久电影观看| 国产精品毛片无码| 久久99久久99精品蜜柚传媒| 国产一区二区三区电影在线观看| 亚洲一区二区精品在线观看| 亚洲深深色噜噜狠狠爱网站| 2019日韩中文字幕mv| 视频一区视频二区中文| 国产一级免费大片| 99久久er热在这里只有精品15| 精品成人无码一区二区三区| 亚洲精品国产视频| 无码免费一区二区三区| 日韩亚洲欧美一区二区三区| 天天在线女人的天堂视频| 亚洲欧美一区二区三区在线| 亚洲搞黄视频| 96精品视频在线| 成人免费在线观看视频| a级国产乱理论片在线观看99| 国产免费久久| 欧美性猛交内射兽交老熟妇| 裸体一区二区| 小日子的在线观看免费第8集| 久久先锋影音av| 黑鬼狂亚洲人videos| 色婷婷狠狠综合| 亚洲爱情岛论坛永久| 在线不卡国产精品| av剧情在线观看| 91香蕉国产在线观看| 蜜桃a∨噜噜一区二区三区| 99久久久精品视频| 麻豆精品久久精品色综合| 黄色av网址在线观看| 国产精品久久久久久户外露出| 日韩精品一区二区不卡| 欧美一区二区视频网站| 超碰免费在线观看| 91sa在线看| 中文字幕一区二区三区日韩精品 | 国产chinesehd精品露脸| 国产精品污www在线观看| 五月婷婷亚洲综合| 日韩一级片网址| 麻豆影院在线观看| 国产精品成人av性教育| 日韩美女毛片| 加勒比成人在线| 国产精品538一区二区在线| 国产精品无码无卡无需播放器| 香港成人在线视频| 亚洲精品福利网站| 久久综合色影院| 在线日韩三级| 水蜜桃一区二区三区| 美女视频一区免费观看| 91精品国产自产| 午夜成人免费电影| 日本黄色免费视频| 国语自产精品视频在线看一大j8 | 成人福利电影| αv一区二区三区| 自拍偷拍欧美| 三年中文在线观看免费大全中国| 中文天堂在线一区| 最近中文字幕在线视频| 亚洲视频免费一区| 三级成人黄色影院| 欧美一级爽aaaaa大片| 久久激情婷婷| 日韩免费成人av| 欧美日韩一级视频| 成人日韩欧美| 99精品99久久久久久宅男| 综合精品久久| 日本精品一二三区| 午夜久久久久久| 天堂影院在线| 国产成人综合av| 日韩欧美电影| 夜夜爽久久精品91| 亚洲一区二区在线视频| 黄色一级a毛片| 57pao国产成人免费| 亚洲精品国模| 久久99爱视频| 一区二区三区在线免费视频| 欧美一级淫片免费视频魅影视频| 97免费视频在线| 你微笑时很美电视剧整集高清不卡 | 国产日韩中文字幕| 一区二区三区中文| 国产性猛交96| 一本大道久久精品懂色aⅴ| 成人精品一区二区三区校园激情| 国产日韩欧美在线观看| 欧美高清不卡| 99久久国产精| 欧美三级中文字幕在线观看| av在线免费网站| 激情五月综合色婷婷一区二区 | 亚洲精品视频在线观看免费| 黑人精品一区二区| 热99精品里视频精品| 午夜欧美在线| 国产精品无码一区二区三区免费 | 精品久久久久久无码国产| 国产精品美女久久久久久| a在线观看视频| 欧美亚洲激情在线| 国产精品精品| a级一a一级在线观看| 欧美日韩精品一区视频| 黑人玩欧美人三根一起进| 久久婷婷国产综合尤物精品| 蜜桃av噜噜一区二区三区小说| 欧美高清视频一区二区三区| 精品在线小视频| 欧美欧美在线| 中文久久久久久| 午夜精品福利视频网站| 日本激情视频在线观看| 久久国产精品免费一区|