精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美性高跟鞋xxxxhd| www.99精品| www.亚洲天堂| 91精品国产三级| 999av小视频在线| 国产亚洲一二三区| 91夜夜揉人人捏人人添红杏| 久久视频免费在线观看| 久久99国内| 日韩一区二区视频| 99爱视频在线| h网站久久久| 久久久久综合网| 2019国产精品视频| 波多野结衣一区二区三区四区| 一区二区三区四区日韩| 亚洲欧美在线免费| 久久久久久无码精品人妻一区二区| 伊人久久综合一区二区| 一区二区三区**美女毛片| 日韩精品在在线一区二区中文| 精品人妻一区二区三区蜜桃| 美腿丝袜亚洲色图| 91精品国产91久久久久久吃药| 日日噜噜夜夜狠狠久久波多野| 网友自拍一区| 亚洲福利视频网| 五月天婷婷在线观看视频| 日本在线视频一区二区| 天天色天天操综合| 中国丰满熟妇xxxx性| 免费黄色在线观看| 中文字幕不卡在线播放| 久久免费一区| 色欲av伊人久久大香线蕉影院| 国产原创一区二区| 国产精品自在线| 天天爱天天做天天爽| 日韩午夜黄色| 97不卡在线视频| 麻豆一区二区三区精品视频| 91tv精品福利国产在线观看| www.欧美精品| 男人av资源站| 羞羞色午夜精品一区二区三区| 中文字幕av一区二区三区谷原希美| 一级国产黄色片| 欧美巨大xxxx| 日韩av影院在线观看| 超碰caoprom| 看全色黄大色大片免费久久久| 精品处破学生在线二十三| 欧美熟妇精品一区二区 | 18久久久久久| 日本一级淫片免费放| 亚洲狠狠婷婷| 2019国产精品自在线拍国产不卡| 日韩久久久久久久久| 亚洲黄色精品| 日韩美女视频免费在线观看| 免费黄色一级大片| 精品在线一区二区三区| 亚洲伊人成综合成人网| 国产99视频在线| 国产成人三级在线观看| 国产精品毛片va一区二区三区| 色丁香婷婷综合久久| 久久久久久夜精品精品免费| 手机在线观看国产精品| 国内精品久久久久久野外| 亚洲人成在线观看一区二区| 日本福利视频在线观看| 日本在线啊啊| 欧美日韩国产三级| 中文字幕第六页| 九九热播视频在线精品6 | 米奇精品一区二区三区| 亚洲免费观看高清完整版在线观看熊| 在线观看污视频| 麻豆网站免费在线观看| 欧美亚洲自拍偷拍| 超碰91在线播放| 色综合久久中文| 色偷偷888欧美精品久久久| 91视频综合网| 午夜一级久久| 91视频免费网站| 午夜福利一区二区三区| 国产精品欧美经典| 欧美一级视频在线播放| 91亚洲精品| 精品国产乱码久久久久久久久| 公侵犯人妻一区二区三区| 久久免费av| 国产综合在线看| 中文天堂在线资源| 成人激情免费网站| 日日夜夜精品网站| 激情av在线| 欧洲一区二区三区免费视频| 国产a级片视频| 大胆日韩av| 91精品国产精品| 国产免费的av| 国产色91在线| 国产特级淫片高清视频| 亚洲精品成a人ⅴ香蕉片| 日韩精品视频在线观看网址| 91嫩草丨国产丨精品| 久久国产日韩| 国产一区免费观看| a毛片在线观看| 欧美在线一区二区| 国产偷人妻精品一区| 欧美日韩综合| 成人黄色片在线| 都市激情一区| 欧美午夜无遮挡| 69亚洲乱人伦| 国产综合亚洲精品一区二| 国产一区香蕉久久| 国产高清在线观看| 日韩欧美中文字幕在线播放| 伊人久久久久久久久| 欧美激情另类| 国产精品丝袜久久久久久不卡| 亚洲欧美色视频| 亚洲一区二区三区四区五区中文| 国产福利精品一区二区三区| 精品国产乱码久久久久久果冻传媒| 91wwwcom在线观看| 手机看片一区二区| 亚洲6080在线| 污污免费在线观看| 国产精品99免费看| 国产精品日韩欧美一区二区三区| 91高清在线观看视频| 欧美一区二区人人喊爽| 国产极品美女在线| 激情欧美一区二区| 国产精品99久久久久久大便| 欧美网站免费| 久久精视频免费在线久久完整在线看| 一本久道久久综合无码中文| 国产精品剧情在线亚洲| 奇米影视四色在线| 日韩午夜电影网| 91久久久久久久一区二区| 毛片在线播放a| 8x8x8国产精品| 美女的奶胸大爽爽大片| 国产传媒日韩欧美成人| 日本阿v视频在线观看| 视频精品国内| 国内成人精品一区| 天堂资源最新在线| 色综合一个色综合| 18精品爽国产三级网站| 蜜臀精品久久久久久蜜臀| 亚洲精品无人区| 成人在线精品| 欧美激情精品在线| 天天操天天干天天插| 欧美性生交xxxxx久久久| 一级片视频免费看| 精品综合免费视频观看| 51xx午夜影福利| 日韩精品免费一区二区三区竹菊 | 成人免费91| 久久99精品视频一区97| 五月天激情婷婷| 色视频一区二区| 欧美一级特黄高清视频| 国产精品99久久久久久有的能看| www.国产在线视频| 最近国产精品视频| 91久久国产精品91久久性色| 欧美videossex| 亚洲男人天堂手机在线| 亚洲永久精品视频| 亚洲成人www| 欧美激情视频二区| 国产成人h网站| 欧美精品无码一区二区三区| 久久亚洲无码视频| 免费电影网站在线视频观看福利| 亚洲激情在线观看视频免费| 九一国产在线观看| 亚洲丝袜美腿综合| 中出视频在线观看| 国产在线一区二区综合免费视频| 国产一线二线三线女| 欧洲激情视频| 韩国精品一区二区三区六区色诱| 国产精品久久久久77777丨| 久久久久久久999| 91九色在线porn| 亚洲国产黄色片| 国产三级小视频| 色呦呦日韩精品| 精品一区二区三区四| 国产欧美日本一区二区三区| 黄色激情在线观看| 国内成人精品2018免费看| 日韩精品视频久久| 午夜精品av| 亚洲免费在线精品一区| 韩国精品福利一区二区三区| 91嫩草在线视频| 欧美日韩激情电影| 18久久久久久| 搞黄网站在线看| 久久躁狠狠躁夜夜爽| 137大胆人体在线观看| 日韩成人在线视频网站| 亚洲第一免费视频| 欧美日韩大陆一区二区| 一级黄色在线观看| 精品国产老师黑色丝袜高跟鞋| 免费看特级毛片| 国产日韩精品一区二区三区| 日本一卡二卡在线| 国产白丝网站精品污在线入口| 亚洲综合欧美激情| 丝袜诱惑制服诱惑色一区在线观看| 欧美黄色免费网址| 亚洲精品电影| 中文字幕一区二区三区5566| 国产亚洲一卡2卡3卡4卡新区| 国产麻豆乱码精品一区二区三区 | 国产一区二区中文字幕免费看| 国产午夜亚洲精品一级在线| 国产欧美va欧美va香蕉在| 欧美日韩美女| 欧美专区中文字幕| 天堂8中文在线最新版在线| 97精品视频在线播放| 黄页在线观看免费| 国精产品一区一区三区有限在线| 国产极品人妖在线观看| 欧美精品18videos性欧| 欧美xxxx免费虐| 欧美高清在线观看| 国产理论电影在线| 久久久久久久一| av免费不卡国产观看| 国内精品免费午夜毛片| 天堂8中文在线最新版在线| 欧美亚洲免费电影| 中文日产幕无线码一区二区| 日本精品va在线观看| 天堂√中文最新版在线| 国产精品99久久久久久久久 | 黄色免费在线观看| 久久成人国产精品| 日本电影在线观看| 国产做受高潮69| 成人欧美大片| 国产精品久久久久久久av电影| 深夜视频一区二区| 国产精品影片在线观看| 日韩一区二区三区高清在线观看| aa日韩免费精品视频一| 国产成人夜色高潮福利影视 | 婷婷综合视频| 日韩国产成人无码av毛片| 亚洲黄页一区| 国产福利视频在线播放| 老色鬼精品视频在线观看播放| 污污网站在线观看视频| 国产成人三级在线观看| 一本加勒比北条麻妃| 国产精品久久久久久久久久久免费看| 亚洲欧美精品久久| 午夜婷婷国产麻豆精品| 99re热视频| 精品国产自在久精品国产| 奇米影视888狠狠狠777不卡| 最近2019中文字幕mv免费看 | 美国一级片在线免费观看视频 | 欧美一级免费观看| 午夜成人免费影院| 日韩最新免费不卡| 91白丝在线| 国产精品免费视频xxxx| 91精品尤物| 日韩欧美亚洲精品| 欧美理论在线| 动漫av免费观看| 国产成人自拍网| 亚洲女优在线观看| 一区二区三区国产精品| 免费观看日批视频| 日韩欧美国产综合一区 | 精品视频自拍| 一区二区三区一级片| 国产精品一区毛片| 少妇愉情理伦片bd| 国产欧美日韩麻豆91| 中文在线观看免费网站| 在线综合+亚洲+欧美中文字幕| 日本免费不卡| 色综合视频网站| 日本免费成人| 久久成人资源| 国产一区日韩欧美| 日本高清久久久| 国产日韩精品一区二区三区在线| 日韩av在线播放观看| 91精品国产高清一区二区三区蜜臀| 日本黄在线观看| 97精品伊人久久久大香线蕉| 国产999精品在线观看| 日韩经典在线视频| 国产精品外国| 午夜男人的天堂| 亚洲乱码国产乱码精品精98午夜| 国产情侣呻吟对白高潮| 亚洲精品视频久久| 国产伦子伦对白在线播放观看| 91久久久久久久一区二区| 欧美日韩激情| 凹凸日日摸日日碰夜夜爽1| 9色porny自拍视频一区二区| 欧美极品视频在线观看| 69av一区二区三区| 日韩伦理在线电影| 国产精品视频999| 精品国产精品久久一区免费式| 熟女少妇在线视频播放| 国产91综合一区在线观看| 欧美日韩一级在线观看| 欧美一区二区三区在线看| 色老头视频在线观看| 国产日韩欧美电影在线观看| 超碰成人久久| 少妇激情一区二区三区| 久久色.com| 成人免费毛片男人用品| 亚洲欧洲国产伦综合| 吞精囗交69激情欧美| 欧美精品七区| 日本美女一区二区三区| 精品日韩在线视频| 欧美撒尿777hd撒尿| 麻豆tv入口在线看| 95av在线视频| 在线欧美亚洲| 99久久人妻精品免费二区| 欧美日韩亚洲网| 欧美女优在线观看| 国产精品日日摸夜夜添夜夜av| 欧美综合视频| 日韩a一级欧美一级| 亚洲黄色录像片| 四虎免费在线观看| 日本乱人伦a精品| 日韩成人综合| 无人码人妻一区二区三区免费| 亚洲最大的成人av| 台湾av在线二三区观看| 国产aⅴ夜夜欢一区二区三区 | 99久久人爽人人添人人澡| www精品久久| 久久你懂得1024| 中文字幕永久免费视频| 欧美成年人视频网站| 国产无遮挡裸体免费久久| 日日碰狠狠丁香久燥| 国产精品美日韩| 精品国产无码AV| 欧美在线观看一区二区三区| 日韩在线综合| www男人天堂| 在线亚洲欧美专区二区| caoporn免费在线| 精品一区2区三区| 精品一区二区三区在线播放视频| 欧美久久久久久久久久久久| 亚洲男人第一网站| 国产精品视频一区二区三区| 精品少妇人妻av免费久久洗澡| 国产亚洲精品久| www.黄色片| 国产精品成人免费视频| 欧美日韩三级电影在线| 国产精品高清无码在线观看| 91精品婷婷国产综合久久性色| 青青青免费在线视频| 国产四区在线观看| 91蜜桃在线免费视频| 国产女18毛片多18精品| 欧美亚洲视频一区二区| 欧美fxxxxxx另类| 谁有免费的黄色网址| 欧美成人女星排名| 欧美风情在线视频| 5月婷婷6月丁香| 一区二区欧美视频| 午夜在线免费观看视频|