91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中Lambda表達式和函數式接口怎么使用

發布時間:2023-04-20 16:17:40 來源:億速云 閱讀:123 作者:iii 欄目:開發技術

今天小編給大家分享一下Java中Lambda表達式和函數式接口怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    1.概述

    當Java 8發布時,其中最令人興奮的特性之一就是 Lambda 表達式。Lambda 表達式是一種輕量級、簡潔和高效的函數式編程方法。它可以用來代替 Java 舊有的匿名內部類,提高代碼的可讀性和可維護性。

    2.lambda表達式的基礎

    Lambda 表達式是一個匿名函數,由輸入參數和處理邏輯兩部分組成:

    (parameter1, parameter2, ...) -> { code block }

    輸入或者輸出可以為空:

    () -> System.out.println("Hello, world!")
    (a) -> {}
    () -> {}

    多參數用括號,單參數可以不用括號:

    (a,b) -> a+b
    a -> System.out.print(a)

    多條處理邏輯用花括號,單條處理邏輯可以不用花括號:

    (a,b) -> a+b;
    (a,b) -> {a+b;a-b;}

    3.JAVA中的lambda表達式

    要在 Java 中使用 Lambda 表達式,需要將它們賦值給一個函數式接口變量。函數式接口是只包含一個抽象方法的接口,它們提供了一種定義 Lambda 表達式類型的方式。例如,下面的函數式接口 MyInterface 包含了一個抽象方法 doSomething

    interface MyInterface {
        void doSomething();
    }

    要使用 Lambda 表達式實現這個接口,只需要提供一個與 doSomething 方法簽名匹配的 Lambda 表達式即可。例如,下面的代碼使用 Lambda 表達式創建了一個 MyInterface 對象,并調用了它的 doSomething 方法:

    MyInterface myLambda = () -> System.out.println("Hello, world!");
    myLambda.doSomething();

    在這個例子中,我們使用 Lambda 表達式創建了一個 MyInterface 對象,并將它賦值給了 myLambda 變量。然后,我們調用了 myLambda.doSomething() 方法,輸出了 Hello, world!

    4.函數式接口

    內置函數式接口

    概述

    JDK8內置實現了一些常用的函數式接口:

    接口作用
    Function程序中映射邏輯的抽象
    Predicate程序中判斷邏輯的抽象
    Consumer程序中的消費型邏輯的抽象
    Suppiler程序中的生產邏輯的抽象

    Function

    Function接口,可以定義入參和出參的類型,可用于類型轉換。

    代碼示例:

    Function<String,Integer> function=(String i)-> Integer.parseInt(i);
    System.out.println(function.apply("1")==1);

    Predicate

    Predicate接口,指定返回值為布爾類型,可用于斷言。

    public static void main(String[] args) {
            Predicate<String> predicate = (s) -> s.length() > 0;
            // 測試字符串的長度是否>0
            System.out.println(predicate.test("hello"));
            // 結果取反
            System.out.println(predicate.negate().test("hello"));
            System.out.println("=====or / and======");
            System.out.println(predicate.test(""));
            // 增加或判斷,二者滿足其一則為true
            System.out.println(predicate.or(s -> s.equals("")).test(""));
            // 增加與判斷,二者都滿足則為true
            System.out.println(predicate.and(s -> s.equals("hello")).test(""));
            System.out.println(predicate.and(s -> s.equals("hello")).test("hello"));
            System.out.println("=====isEqual======");
            // 判斷是否相等
            System.out.println(Predicate.isEqual("hello").test(""));
            System.out.println(Predicate.isEqual("hello").test("hello"));
            Predicate<Boolean> nonNull = Objects::nonNull;
            Predicate<Boolean> isNull = Objects::isNull;
            Predicate<String> isEmpty = String::isEmpty;
            Predicate<String> isNotEmpty = isEmpty.negate();
        }

    Consumer

    Consumer接口,又叫消費接口,沒有返回值,就像把輸入消費掉了一樣。

    public static void main(String[] args) {
       Consumer<Object> consumer1 = new Consumer<Object>() {
       @Override
       public void accept(Object o) {
         System.out.println("這次消費了:" + o.toString());
         }
       };
       consumer1.accept("100w元在雙十一!這下窮死了!");
       Consumer<String> consumer2 = s -> System.out.println("這次消費了:" + s);
       consumer2.accept("120w元在雙十二!又窮死了!");
    }

    Suppiler

    Suppiler接口,又叫生產接口,可以自定義返回值,用來生產一些東西。

    public static void main(String[] args) {
        // 生成一個字符串
        Supplier<String> supplier1 = () -> "abcde";
        // 生成一個隨機數
        Supplier<Integer> supplier2 = () -> new Random().nextInt(10);
        // 產生一個運行時異常
        Supplier<RuntimeException> supplier3 = () -> new RuntimeException();
        System.out.println(supplier1.get());
        System.out.println(supplier2.get().intValue());
        System.out.println(supplier3.get());
    }

    5.級聯與柯里化

    級聯表達式,含有多個箭頭的lambda表達式,即“套娃”lambda表達式。

    以下列lambda表達式為例:

    x->y->x+y

    假設輸入的為Integer類型,

    用Function接口來表達即為:

    輸入一個Integer x,返回一個Integer y,

    Integer y又可以用Function接口來表示為:

    輸入一個Integer,返回一個Integer

    Function<Integer,Function<Integer,Integer>> functionFunction= x->y->x+y;
    System.out.println(functionFunction.apply(2).apply(3));

    以上就是“Java中Lambda表達式和函數式接口怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    东港市| 聊城市| 昆山市| 虎林市| 梓潼县| 凌源市| 杭锦旗| 德化县| 大连市| 行唐县| 收藏| 新津县| 龙门县| 乐平市| 油尖旺区| 元江| 广元市| 锡林浩特市| 阿城市| 大方县| 无锡市| 泸州市| 喀喇| 凉城县| 肥西县| 井研县| 丹凤县| 张家口市| 崇明县| 虎林市| 上饶县| 英德市| 江安县| 烟台市| 葫芦岛市| 淮南市| 南汇区| 盐池县| 筠连县| 益阳市| 安图县|