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

Java中的函數接口,你都用過了嗎

開發 前端
只包含一個抽象方法的接口稱為函數式接口,在這篇文章中,我們將通過示例來學習 Java 函數式接口。

在這篇文章中,我們將通過示例來學習 Java 函數式接口。

一、函數式接口的特點

  • 只包含一個抽象方法的接口稱為函數式接口。
  • 它可以有任意數量的默認靜態方法,但只能包含一個抽象方法。它還可以聲明對象類的方法。
  • 函數接口也稱為單一抽象方法接口或SAM 接口。
  • 函數式接口只有在沒有任何抽象方法時才可以擴展另一個接口。
  • Java API 具有許多單方法接口,例如 Runnable、Callable、Comparator、ActionListener等。它們可以使用匿名類語法來實現和實例化。

二、接口示例

創建一個自定義的Sayable接口,這是一個使用@FunctionalInterface注解的函數式接口。@FunctionalInterface注解表示該接口是一個函數式接口,并且只包含一個抽象方法。

1.自定義函數接口示例:

@FunctionalInterface  
interface Sayable{  
    void say(String msg);   // abstract method   
}  

讓我們通過main()方法來演示一個自定義的函數式接口。我們使用Lambda表達式來實現函數式接口。

public class FunctionalInterfacesExample {

    public static void main(String[] args) {

        Sayable sayable = (msg) -> {
            System.out.println(msg);
        };
        sayable.say("Say something ..");
    }
}

2.Predefined 函數接口

Java提供了Predefined的函數式接口,通過使用 lambda 和方法引用來處理函數式編程。

Predicate是檢查條件的函數,它接受一個參數并返回boolean結果。

讓我們來看一下Predicate接口的內部實現。

import java.util.function.Predicate;

public interface Predicate<T> {
    boolean test(T t);

    default Predicate<T> and(Predicate<? super T> other) {
        // 默認方法的實現
        return (t) -> test(t) && other.test(t);
    }

    // 其他默認方法和靜態方法...
}

Predicate接口只包含一個抽象方法test(T t)同時它還包含默認方法和靜態方法。

讓我們創建一個示例來演示Predicate函數式接口的用法:

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 使用Predicate接口檢查數字是否為偶數
        Predicate<Integer> evenNumberPredicate = number -> number % 2 == 0;
        System.out.println("Even numbers:");
        printNumbers(numbers, evenNumberPredicate);

        // 使用Predicate接口檢查數字是否大于5
        Predicate<Integer> greaterThanFivePredicate = number -> number > 5;
        System.out.println("Numbers greater than 5:");
        printNumbers(numbers, greaterThanFivePredicate);
    }

    public static void printNumbers(List<Integer> numbers, Predicate<Integer> predicate) {
        for (Integer number : numbers) {
            if (predicate.test(number)) {
                System.out.println(number);
            }
        }
    }
}

3.Function 函數接口

Function函數接口是Java中的一個函數式接口,它定義了一個接收一個參數并返回結果的函數。它的定義如下:

@FunctionalInterface
public interface Function<T, R> {
    R apply(T t);
}

Function接口有兩個泛型參數:T表示輸入參數的類型,R表示返回結果的類型。它包含一個抽象方法apply(),接收一個類型為T的參數,并返回一個類型為R的結果。

Function接口常用于將一個值轉換為另一個值,或者對輸入值進行處理和計算。它可以被用于各種場景,如數據轉換、映射、計算和處理等。

以下是一個使用Function函數接口的示例:

import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        // 創建一個Function接口來將字符串轉換為大寫
        Function<String, String> uppercaseFunction = str -> str.toUpperCase();

        // 使用Function接口將字符串轉換為大寫
        String result = uppercaseFunction.apply("hello world");
        System.out.println(result);  // 輸出: HELLO WORLD

        // 使用Function接口將字符串轉換為其長度
        Function<String, Integer> lengthFunction = str -> str.length();
        int length = lengthFunction.apply("hello");
        System.out.println(length);  // 輸出: 5
    }
}

4.Supplier 函數接口

Supplier用于表示一個提供(供應)結果的函數。它通常用于延遲計算或在需要時生成值。通過調用get()方法,我們可以獲取由Supplier實例提供的結果。

以下是Consumer接口的實現

@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

由于Supplier接口只有一個抽象方法,因此可以使用lambda表達式快速創建Supplier實例。下面是一個示例:

import java.util.Random;
import java.util.function.Supplier;

public class Main {
    public static void main(String[] args) {
        // 創建一個Supplier接口來生成隨機整數
        Supplier<Integer> randomIntegerSupplier = () -> new Random().nextInt();

        // 使用Supplier接口生成隨機整數
        int randomNumber = randomIntegerSupplier.get();
        System.out.println(randomNumber);

        // 創建一個Supplier接口來生成當前時間戳
        Supplier<Long> timestampSupplier = () -> System.currentTimeMillis();

        // 使用Supplier接口生成當前時間戳
        long timestamp = timestampSupplier.get();
        System.out.println(timestamp);
    }
}

5.Consumer 函數接口

Consumer用于表示接受一個參數并執行某些操作的函數。它定義了一個名為accept(T t)的抽象方法,接受一個參數,并且沒有返回值。

以下是Consumer接口的簡化版本:

@FunctionalInterface
public interface Consumer<T> {
    void accept(T arg0);
}

Consumer接口適用于那些需要對傳入的參數進行某種操作,而不需要返回結果的情況。它可以用于在不同的上下文中執行各種操作,如打印、修改狀態、更新對象等。下面是一個使用Consumer接口的示例:

import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");

        // 使用Consumer接口打印每個名字
        Consumer<String> printName = name -> System.out.println(name);
        names.forEach(printName);

        // 使用Consumer接口修改每個名字為大寫形式
        Consumer<String> uppercaseName = name -> {
            String uppercase = name.toUpperCase();
            System.out.println(uppercase);
        };
        names.forEach(uppercaseName);
    }
}

在上述示例中,我們創建了兩個Consumer接口的實例。第一個printName用于打印每個名字,第二個uppercaseName用于將每個名字轉換為大寫形式并打印。

通過調用forEach()方法并傳入相應的Consumer接口實例,我們可以對列表中的每個元素執行相應的操作。在示例中,我們對名字列表中的每個名字進行了打印和轉換操作。

Consumer接口的使用場景包括遍歷集合、處理回調函數、更新對象狀態等。它提供了一種簡潔的方式來執行針對輸入參數的操作,使得代碼更加清晰和模塊化。

6.BiFunction 函數接口

BiFunction函數式接口表示接受兩個參數并返回結果的函數。它定義了一個名為apply(T t, U u)的抽象方法,接受兩個參數,并返回一個結果。

讓我們來看一下BiFunction接口的簡化版本。

@FunctionalInterface
public interface BiFunction<T, U, R> {
    R apply(T arg0, U arg1);
}

BiFunction接口適用于那些需要接受兩個輸入參數并產生結果的情況。它可以用于執行各種操作,如計算、轉換、篩選等。下面是一個使用BiFunction接口的示例:

import java.util.function.BiFunction;

public class Main {
    public static void main(String[] args) {
        // 使用BiFunction接口計算兩個數的和
        BiFunction<Integer, Integer, Integer> sumFunction = (a, b) -> a + b;
        int sum = sumFunction.apply(5, 3);
        System.out.println(sum);  // 輸出: 8

        // 使用BiFunction接口將兩個字符串拼接起來
        BiFunction<String, String, String> concatenateFunction = (str1, str2) -> str1 + str2;
        String result = concatenateFunction.apply("Hello, ", "World!");
        System.out.println(result);  // 輸出: Hello, World!
    }
}

7.BiConsumer函數接口

BiConsumer接口,用于表示接受兩個參數并執行某些操作的函數。它定義了一個名為accept(T t, U u)的抽象方法,接受兩個參數,并且沒有返回值。

以下是BiConsumer接口的簡化版本:

import java.util.function.BiConsumer;

@FunctionalInterface
public interface BiConsumer<T, U> {
    void accept(T t, U u);
}

BiConsumer接口適用于那些需要對傳入的兩個參數進行某種操作,而不需要返回結果的情況。它可以用于在不同的上下文中執行各種操作,如打印、修改狀態、更新對象等。下面是一個使用BiConsumer接口的示例:

import java.util.function.BiConsumer;

public class Main {
    public static void main(String[] args) {
        // 使用BiConsumer接口打印兩個數的和
        BiConsumer<Integer, Integer> sumPrinter = (a, b) -> System.out.println(a + b);
        sumPrinter.accept(5, 3);

        // 使用BiConsumer接口打印兩個字符串的拼接結果
        BiConsumer<String, String> concatenationPrinter = (str1, str2) -> System.out.println(str1 + str2);
        concatenationPrinter.accept("Hello, ", "World!");
    }
}

8.BiPredicate 函數接口

BiPredicate接口用于表示接受兩個參數并返回一個布爾值的函數。它定義了一個名為test(T t, U u)的抽象方法,接受兩個參數,并返回一個布爾值。

以下是BiPredicate接口的簡化版本:

@FunctionalInterface 
public interface BiPredicate<T, U> {
     boolean test(T t, U u);
     // Default methods are defined also
}

BiPredicate接口適用于那些需要對傳入的兩個參數進行某種條件判斷,并返回布爾值的情況。它可以用于執行各種條件判斷,如相等性比較、大小比較、復雜條件判斷等。

下面是一個使用BiPredicate接口的示例:

import java.util.function.BiPredicate;

public class Main {
    public static void main(String[] args) {
        // 使用BiPredicate接口判斷兩個數是否相等
        BiPredicate<Integer, Integer> equalityPredicate = (a, b) -> a.equals(b);
        boolean isEqual = equalityPredicate.test(5, 5);
        System.out.println(isEqual);  // 輸出: true

        // 使用BiPredicate接口判斷一個字符串是否包含另一個字符串
        BiPredicate<String, String> containsPredicate = (str1, str2) -> str1.contains(str2);
        boolean isContains = containsPredicate.test("Hello, World!", "World");
        System.out.println(isContains);  // 輸出: true
    }
}
責任編輯:趙寧寧 來源: 架構成長指南
相關推薦

2020-08-23 09:18:30

Pandas函數數據分析

2021-02-22 09:10:10

數字人民幣DCEP區塊鏈

2010-11-26 09:45:56

2020-08-16 10:58:20

Pandaspython開發

2022-05-27 09:02:31

Openbase開源前端

2009-07-20 10:18:49

PHP 5.3命名空間

2010-07-09 09:01:55

2023-11-22 07:42:01

2020-12-02 14:50:50

Windows 10Windows微軟

2023-01-28 10:27:04

2021-11-30 08:44:29

SpringRouter Func函數式接口

2022-05-18 08:00:26

函數劫持JavaScript鉤子函數

2020-11-30 05:51:52

Windows10

2019-01-10 16:52:26

華為

2023-09-09 12:23:24

函數式接口程序

2023-11-06 07:37:01

函數式插槽React

2024-11-08 09:37:10

C#組件

2020-06-03 16:50:09

Node.js框架開發

2024-11-07 12:33:47

2023-10-10 08:33:40

編程范式命令式編程
點贊
收藏

51CTO技術棧公眾號

亚洲精品久久久久久动漫器材一区| 欧美成人777| 日本黄色一区| 亚洲色图清纯唯美| 久久精品五月婷婷| 国产情侣呻吟对白高潮| 欧美在线黄色| 亚洲人av在线影院| 波多野结衣网页| 中文字幕乱码在线播放| 亚洲视频在线观看一区| 国产一区二区三区色淫影院| 无码人妻精品一区二区三区蜜桃91| 日韩精品诱惑一区?区三区| 日韩美女一区二区三区四区| 黄色动漫网站入口| 91蜜桃在线视频| 久久综合国产精品| 91九色视频在线观看| 天天操夜夜操视频| 亚洲国产精品久久久久蝴蝶传媒| 日韩电影中文字幕一区| 免费观看黄网站| 国产成人免费9x9x人网站视频 | 人禽交欧美网站| 久久久久女教师免费一区| av永久免费观看| 日本成人7777| 欧美成人精品二区三区99精品| 久久久久免费精品| av免费不卡国产观看| 亚洲品质自拍视频| 九9re精品视频在线观看re6| 国产黄色小视频在线观看| 蜜桃久久精品一区二区| 欧美野外猛男的大粗鳮| 免费中文字幕在线观看| 希岛爱理av一区二区三区| 亚洲精品资源美女情侣酒店| 欧美激情一区二区三区p站| 香蕉久久一区| 欧美日韩mp4| 日韩一级理论片| 成人免费看黄| 欧美视频国产精品| 国产资源在线视频| av福利在线导航| 一二三区精品视频| 蜜臀av性久久久久蜜臀av| 日本在线视频站| 国产精品灌醉下药二区| 五月天国产一区| 成年人视频在线看| 国产精品理论片在线观看| 性欧美videosex高清少妇| 国产一二三区在线| 日本一区二区综合亚洲| 日产精品一线二线三线芒果| 亚洲 精品 综合 精品 自拍| aaa国产一区| 久久久神马电影| 亚洲av成人无码网天堂| 久久亚洲精品小早川怜子| 狼狼综合久久久久综合网| 视频三区在线观看| 国产婷婷一区二区| 亚洲人成网站在线播放2019| 浪潮av一区| 亚洲最大成人网4388xx| www..com日韩| 亚洲午夜天堂| 欧美三级午夜理伦三级中视频| 久久综合伊人77777麻豆最新章节| 国产成人精品亚洲日本在线观看| 欧美在线不卡一区| 国产又黄又猛的视频| 日韩精品视频在线看| 精品日韩av一区二区| 粉嫩av懂色av蜜臀av分享| 亚洲精品亚洲人成在线观看| 这里只有精品视频| 欧美人妻一区二区| 亚洲欧美日韩专区| 国产精品稀缺呦系列在线| 国产欧美一区二区三区视频在线观看| 国产精品原创巨作av| 国产一区二区三区黄| 高清在线观看av| 亚洲一区二区在线播放相泽| 欧美网站免费观看| 欧美在线se| 精品国产精品一区二区夜夜嗨| 成年人在线观看av| 99久久综合| 国精产品一区一区三区有限在线| 亚洲黄色免费观看| 国产高清成人在线| 欧美lavv| 中文字幕在线三区| 色视频欧美一区二区三区| 亚洲色图欧美自拍| 四虎5151久久欧美毛片| 久久久国产精品免费| 在线能看的av| 精品一区二区在线视频| 久久久久久久久久久久久久一区 | 日韩免费av网站| 国产成人av电影在线| 茄子视频成人在线观看| 午夜成年人在线免费视频| 色噜噜狠狠色综合中国 | gogo大胆日本视频一区| 亚洲五月六月| 免费日韩电影| 精品国产乱码久久久久久免费 | 国产va免费精品高清在线观看| 99久久精品国产一区二区成人| 久久精品视频免费| 免费在线看黄色片| 中文成人激情娱乐网| 亚洲欧美激情在线视频| 久久婷婷一区二区| 激情深爱一区二区| 亚洲激情图片| 欧美人与性动交xxⅹxx| 亚洲精品白浆高清久久久久久| 91嫩草丨国产丨精品| 奇米四色…亚洲| 欧美精品尤物在线| 国产拍在线视频| 日韩欧美色综合网站| 中文字幕乱码av| 日韩高清在线电影| 欧美极品一区二区| 国产激情视频在线看| 欧美tk—视频vk| 国产精品国产精品88| 久久99精品一区二区三区三区| 欧美日韩最好看的视频| 国产不卡网站| 亚洲理论在线a中文字幕| 亚洲精品77777| 国产成人亚洲综合色影视| 91嫩草国产丨精品入口麻豆| 亚洲精品伊人| 久久综合伊人77777尤物| 一级爱爱免费视频| 国产精品久久久久久久久免费樱桃 | 香蕉视频网站在线观看| 精品视频在线免费看| 亚洲一区二区自偷自拍| 男女精品网站| 欧洲在线视频一区| 成人在线视频播放| 色老头一区二区三区| 亚洲性猛交富婆| 中文字幕av一区二区三区| 国产免费人做人爱午夜视频| 国产精品片aa在线观看| 国产精品精品国产| 在线播放毛片| 日韩小视频在线观看专区| 成年人一级黄色片| 高清免费成人av| 国产免费黄色一级片| 人妖一区二区三区| 国产精品www色诱视频| 日日夜夜精品一区| 精品久久一区二区| 国产成人亚洲欧洲在线| 2020国产精品自拍| 五月天av在线播放| 自拍偷拍欧美专区| 国内精品二区| 国产福利亚洲| 欧美成人亚洲成人日韩成人| 日本黄色三级视频| 色噜噜狠狠一区二区三区果冻| 日韩av毛片在线观看| 成人黄色网址在线观看| 熟女人妇 成熟妇女系列视频| 99精品网站| 成人免费在线看片| 日韩天堂在线| 欧美精品一区二区三区国产精品 | 在线三级中文| 国产97色在线 | 日韩| 日韩精品a在线观看91| 青青草一区二区| 欧美videos极品另类| 欧美成人乱码一区二区三区| 国产精品免费精品一区| 中文字幕在线播放不卡一区| 性高潮免费视频| 日日摸夜夜添夜夜添国产精品| 国产欧美综合一区| 天海翼精品一区二区三区| 国产一区玩具在线观看| 成av人片在线观看www| 中文字幕欧美日韩| 欧美一级视频免费| 欧美精品在欧美一区二区少妇| 久久网一区二区| 国产精品伦理在线| 欧美无人区码suv| 加勒比av一区二区| 国产麻花豆剧传媒精品mv在线| 中文字幕乱码亚洲无线精品一区| 久久这里精品国产99丫e6| 国产精品18| 国产精品久久综合av爱欲tv| freexxx性亚洲精品| 久久网福利资源网站| 九色在线观看视频| 精品福利av导航| 国产精品伦理一区| 色婷婷久久一区二区三区麻豆| 国产亚洲小视频| 国产精品毛片久久久久久久| 91中文字幕永久在线| 高清不卡在线观看av| 成人一区二区三| 在线亚洲观看| 妞干网在线观看视频| 一区二区日韩欧美| 一本一生久久a久久精品综合蜜| 亚瑟一区二区三区四区| 俄罗斯精品一区二区| 国产一区二区三区| 91精品视频一区| 亚洲一区有码| 国产精品吴梦梦| 国产一区二区三区朝在线观看| 欧洲精品毛片网站| 19禁羞羞电影院在线观看| 欧美黄色成人网| 日本孕妇大胆孕交无码| 久久夜色精品国产欧美乱| av黄色在线观看| 中文字幕一区二区精品| 国产高清美女一级毛片久久| 亚洲人午夜精品免费| 免费黄色片在线观看| 亚洲美女免费精品视频在线观看| 五月婷婷在线播放| 精品视频久久久| 天堂中文资源在线| 日韩经典中文字幕| 日色在线视频| 亚洲视频电影图片偷拍一区| 电影在线一区| 中文字幕欧美精品日韩中文字幕| 成人免费高清在线播放| 中文字幕久热精品视频在线| 里番在线观看网站| 欧美精品一二区| 搞黄网站在线看| 538国产精品一区二区在线| 日韩深夜视频| 国产精品草莓在线免费观看| 国产91在线播放精品| 国产主播在线一区| 日韩视频一二区| 国产在线精品一区| 自拍视频一区| 亚洲第一在线综合在线| 天天插综合网| 久艹在线免费观看| 国产手机视频一区二区| 国产视频一区二区三区在线播放| 蜜臀av性久久久久蜜臀aⅴ四虎| 91视频这里只有精品| 国产激情偷乱视频一区二区三区| 亚洲av熟女高潮一区二区| 91丨九色丨蝌蚪丨老版| 美女网站视频色| 亚洲午夜一区二区| 日韩 国产 欧美| 91精品国产综合久久小美女| 日韩永久免费视频| 亚洲网站视频福利| 成人免费网址| 欧美在线观看网站| 性欧美video另类hd尤物| 国产精品免费视频一区二区| 精品一区不卡| 欧美 亚洲 视频| 视频一区中文字幕| 红桃视频一区二区三区免费| 97精品久久久久中文字幕| 亚洲一区 欧美| 亚洲成a人片在线不卡一二三区| 免费无码国产精品| 精品日韩一区二区三区 | 99久久精品99国产精品| 免费在线观看a视频| 亚洲国产综合色| 91国在线视频| 亚洲美女动态图120秒| fc2ppv国产精品久久| 国产99视频在线观看| 日韩中文字幕视频网| 日韩欧美一区二区三区久久婷婷| 91精品秘密在线观看| 成人在线观看黄| 粉嫩高潮美女一区二区三区| 9.1片黄在线观看| 欧美日韩国产专区| av中文字幕播放| 在线看日韩欧美| 白浆在线视频| 91精品入口蜜桃| 久久影院100000精品| 无码人妻精品一区二区三区在线| 国产一区二区在线影院| 少妇av片在线观看| 黑丝美女久久久| 成人久久久精品国产乱码一区二区 | 你懂的亚洲视频| 欧美激情第3页| 欧美国产日本韩| 黄色片中文字幕| 亚洲精品国产精品国产自| 特级毛片在线| 91在线观看免费观看| 激情综合网站| 99爱视频在线| 91在线视频播放| 日本学生初尝黑人巨免费视频| 日韩一区二区三区电影| 欧洲不卡av| 国产综合视频在线观看| 日本在线电影一区二区三区| 久久国产亚洲精品无码| 成人av免费在线观看| 久久久久久久9999| 日韩三级免费观看| av电影免费在线观看| 亚洲www视频| 在线观看日韩| 无套白嫩进入乌克兰美女| 亚洲乱码国产乱码精品精的特点| 国产精品免费无遮挡| www.欧美免费| 国产麻豆一区二区三区| 综合操久久久| 国产麻豆日韩欧美久久| 九九九免费视频| 精品日韩一区二区三区| tube8在线hd| 精品一区二区三区视频日产| 亚洲一区二区三区四区五区午夜 | 久久综合久久美利坚合众国| 9999精品免费视频| 咪咪色在线视频| 国产剧情一区二区三区| 久久久久久久国产视频| 精品国产一区二区三区四区四| 国内在线免费视频| 精品日本一区二区三区在线观看| 国产日产高清欧美一区二区三区| 一本色道综合久久欧美日韩精品| 福利微拍一区二区| 韩国中文字幕2020精品| 国产精品看片资源| 伊人久久大香线蕉综合四虎小说| 韩国三级丰满少妇高潮| 亚洲国产一区二区a毛片| 色视频在线观看| 国产精品91一区| 亚洲大全视频| chinese麻豆新拍video| 一本久道久久综合中文字幕| a中文在线播放| 99re热精品| 亚洲女人av| 欧美人与禽zoz0善交| 日韩欧美123| 天堂√8在线中文| 亚洲一卡二卡区| 风流少妇一区二区| 日本高清不卡码| 久久精品一偷一偷国产| swag国产精品一区二区| 粗暴91大变态调教| 亚洲欧美一区二区三区孕妇| 欧美一级淫片aaaaaa| 国产精品第七十二页| 欧美日韩四区| av在线网站观看| 欧美高清性hdvideosex| 麻豆免费版在线观看| 一本一道久久久a久久久精品91 | 欧美精品免费视频| gogo久久| 亚洲电影免费| 91蜜桃婷婷狠狠久久综合9色| 国产精品爽爽久久| 欧美中文字幕视频在线观看| 五月天激情综合网|