亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

lambda表達(dá)式有參數(shù)有返回值

codergarden / 1677人閱讀

摘要:的參數(shù)和返回值需求使用數(shù)組存儲(chǔ)多個(gè)對(duì)象對(duì)數(shù)組中的對(duì)象使用的方法通過年齡進(jìn)行升序排序下面舉例演示接口的使用場(chǎng)景代碼,其中的抽象方法定義為當(dāng)需要對(duì)一個(gè)對(duì)象數(shù)組進(jìn)行排序時(shí),方法需要一個(gè)接口實(shí)例來指定排序的規(guī)則。

3.8 Lambda的參數(shù)和返回值
需求:
    使用數(shù)組存儲(chǔ)多個(gè)Person對(duì)象
    對(duì)數(shù)組中的Person對(duì)象使用Arrays的sort方法通過年齡進(jìn)行升序排序

下面舉例演示java.util.Comparator接口的使用場(chǎng)景代碼,其中的抽象方法定義為:

public abstract int compare(T o1, T o2);

當(dāng)需要對(duì)一個(gè)對(duì)象數(shù)組進(jìn)行排序時(shí),Arrays.sort方法需要一個(gè)Comparator接口實(shí)例來指定排序的規(guī)則。假設(shè)有一個(gè)Person類,含有String nameint age兩個(gè)成員變量:

public class Person { 
    private String name;
    private int age;
    
    // 省略構(gòu)造器、toString方法與Getter Setter 
}
傳統(tǒng)寫法

如果使用傳統(tǒng)的代碼對(duì)Person[]數(shù)組進(jìn)行排序,寫法如下:

import java.util.Arrays;
import java.util.Comparator;

public class Demo06Comparator {
    public static void main(String[] args) {
          // 本來年齡亂序的對(duì)象數(shù)組
        Person[] array = {
            new Person("古力娜扎", 19),
            new Person("迪麗熱巴", 18),
               new Person("馬爾扎哈", 20) };

          // 匿名內(nèi)部類
        Comparator comp = new Comparator() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge() - o2.getAge();
            }
        };
        Arrays.sort(array, comp); // 第二個(gè)參數(shù)為排序規(guī)則,即Comparator接口實(shí)例

        for (Person person : array) {
            System.out.println(person);
        }
    }
}

這種做法在面向?qū)ο蟮乃枷胫?,似乎也是“理所?dāng)然”的。其中Comparator接口的實(shí)例(使用了匿名內(nèi)部類)代表了“按照年齡從小到大”的排序規(guī)則。

代碼分析

下面我們來搞清楚上述代碼真正要做什么事情。

為了排序,Arrays.sort方法需要排序規(guī)則,即Comparator接口的實(shí)例,抽象方法compare是關(guān)鍵;

為了指定compare的方法體,不得不需要Comparator接口的實(shí)現(xiàn)類;

為了省去定義一個(gè)ComparatorImpl實(shí)現(xiàn)類的麻煩,不得不使用匿名內(nèi)部類;

必須覆蓋重寫抽象compare方法,所以方法名稱、方法參數(shù)、方法返回值不得不再寫一遍,且不能寫錯(cuò);

實(shí)際上,只有參數(shù)和方法體才是關(guān)鍵。

Lambda寫法
import java.util.Arrays;

public class Demo07ComparatorLambda {
    public static void main(String[] args) {
        Person[] array = {
              new Person("古力娜扎", 19),
              new Person("迪麗熱巴", 18),
              new Person("馬爾扎哈", 20) };

        Arrays.sort(array, (Person a, Person b) -> {
              return a.getAge() - b.getAge();
        });

        for (Person person : array) {
            System.out.println(person);
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75993.html

相關(guān)文章

  • 樂字節(jié)-Java8核心特性實(shí)戰(zhàn)之Lambda達(dá)式

    摘要:使用表達(dá)式,使得應(yīng)用變得簡(jiǎn)潔而緊湊。很多語言等從設(shè)計(jì)之初就支持表達(dá)式。表達(dá)式的參數(shù)與函數(shù)式接口內(nèi)方法的參數(shù),返回值類型相互對(duì)應(yīng)。更多教程和資料請(qǐng)上騰訊課堂樂字節(jié) showImg(https://segmentfault.com/img/bVbtotg?w=935&h=345); Java8 引入Lambda表達(dá)式,允許開發(fā)者將函數(shù)當(dāng)成參數(shù)傳遞給某個(gè)方法,或者把代碼本身當(dāng)作數(shù)據(jù)進(jìn)行處理。...

    Karuru 評(píng)論0 收藏0
  • 「Java 8 函數(shù)式編程」讀書筆記——lambda達(dá)式

    摘要:本文是函數(shù)式編程第二章的讀書筆記。的語法簡(jiǎn)化了使用匿名內(nèi)部類時(shí)的模板代碼,讓程序員專注于編寫想要執(zhí)行的行為,也讓代碼更加簡(jiǎn)潔易讀。中最重要的函數(shù)接口類型推斷為新成員表達(dá)式提供了類型推斷的支持,在不需要聲明參數(shù)類型的表達(dá)式中表現(xiàn)的有為明顯。 本文是「Java 8 函數(shù)式編程」第二章的讀書筆記。 Lambda引入的變化 Lambda表達(dá)式,是一種緊湊的、傳遞行為的方式,從編程思想上來講,...

    lx1036 評(píng)論0 收藏0
  • 樂字節(jié)-Java8新特性-Lambda達(dá)式

    摘要:很多語言等從設(shè)計(jì)之初就支持表達(dá)式。注意此時(shí)外部局部變量將自動(dòng)變?yōu)樽鳛榉椒ǚ祷刂道臃祷嘏袛嘧址欠駷榭张袛嘧址欠駷榭战裉礻P(guān)于新特性表達(dá)式就講到這里了,接下來我會(huì)繼續(xù)講述新特性之函數(shù)式接口。 上一篇文章我們了解了Java8新特性-接口默認(rèn)方法,接下來我們聊一聊Java8新特性之Lambda表達(dá)式。 Lambda表達(dá)式(也稱為閉包),它允許我們將函數(shù)當(dāng)成參數(shù)傳遞給某個(gè)方法,或者把代碼...

    gggggggbong 評(píng)論0 收藏0
  • Lambda達(dá)式參數(shù)返回的練習(xí)

    摘要:表達(dá)式有參數(shù)有返回值的練習(xí)需求給定一個(gè)計(jì)算器接口,內(nèi)含抽象方法可以將兩個(gè)數(shù)字相加得到和值使用的標(biāo)準(zhǔn)格式調(diào)用方法,完成和的相加計(jì)算調(diào)用方法方法的參數(shù)是一個(gè)接口可以使用匿名內(nèi)部類使用表達(dá)式簡(jiǎn)化匿名內(nèi)部類的書寫優(yōu)化省略定義一個(gè)方法參數(shù)傳遞兩個(gè) package com.itheima.demo06.Lambda; /* Lambda表達(dá)式有參數(shù)有返回值的練習(xí) 需求: 給定一個(gè)計(jì)算器Ca...

    nodejh 評(píng)論0 收藏0
  • Java8特性① Lambda 達(dá)式

    摘要:上下文比如接受它傳遞的方法的參數(shù),或接受它的值的局部變量中表達(dá)式需要的類型稱為目標(biāo)類型。但局部變量必須顯式聲明為,或事實(shí)上是。換句話說,表達(dá)式只能捕獲指派給它們的局部變量一次。注捕獲實(shí)例變量可以被看作捕獲最終局部變量。 簡(jiǎn)介 概念 Lambda 表達(dá)式可以理解為簡(jiǎn)潔地表示可傳遞的匿名函數(shù)的一種方式:它沒有名稱,但它有參數(shù)列表、函數(shù)主體、返回類型,可能還有一個(gè)可以拋出的異常列表。 匿名...

    vpants 評(píng)論0 收藏0
  • JAVA Lambda達(dá)式

    摘要:語言是強(qiáng)類型面向?qū)ο蟮恼Z言,所以必須提供一種數(shù)據(jù)類型作為表達(dá)式的返回值類型符合中函數(shù)格式的定義符合面向?qū)ο笠?guī)則,所以最終表達(dá)式要有一個(gè)映射成對(duì)象的過程。定一個(gè)函數(shù)式接口我們?cè)诮涌诶锒x了一個(gè)沒有參數(shù)返回值的抽象方法。 在JAVA中,Lambda 表達(dá)式(Lambda expression)是一個(gè)抽象方法的實(shí)現(xiàn)。這個(gè)抽象方法必須是在接口中聲明的,而且實(shí)現(xiàn)類只需要實(shí)現(xiàn)這一個(gè)抽象方法,我們稱...

    Cheng_Gang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<