日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Java的函數式接口編程示例

來源: 責編: 時間:2024-02-29 14:41:06 258觀看
導讀背景函數式接口是在Java 8中引入的,與Lambda表達式和方法引用一起。這三個特性被添加到Java中,以促進函數式編程并編寫干凈、可讀的代碼。在Java 8之前,需要編寫大量樣板代碼來涵蓋基本功能。例如,為了調用一個函數,首先我

KGF28資訊網——每日最新資訊28at.com

背景

函數式接口是在Java 8中引入的,與Lambda表達式和方法引用一起。這三個特性被添加到Java中,以促進函數式編程并編寫干凈、可讀的代碼。在Java 8之前,需要編寫大量樣板代碼來涵蓋基本功能。例如,為了調用一個函數,首先我們必須創建一個具有所需方法的類,創建類的實例,然后使用實例來調用方法,或者使用具有相應方法的匿名類的另一種方式。KGF28資訊網——每日最新資訊28at.com

使用Lambda表達式,我們可以避免使用具體類和匿名類對象的需求。函數式接口更進一步,因為Lambda表達式只需要實現一個方法,所以可以輕松地實現函數式接口。KGF28資訊網——每日最新資訊28at.com

函數式接口只展示一個功能。例如,一個具有單一方法compareTo()的Comparable接口用于比較目的。但它可以有任意數量的默認方法和靜態方法。KGF28資訊網——每日最新資訊28at.com

Java 8定義了許多函數式接口,可以廣泛用于Lambda表達式。以下是在java.util.Function包中定義的函數式接口列表。KGF28資訊網——每日最新資訊28at.com

@FunctionalInterface注解,按照功能,任何具有單個抽象方法的接口都是函數式接口。Java提供了@FunctionalInterface注解,以將一個接口標記為函數式接口,以便編譯器可以檢查接口是否是函數式接口。此注解是可選的,主要是為了增加編譯器的檢查和增加代碼的可讀性和維護性。KGF28資訊網——每日最新資訊28at.com

函數式接口編程示例

函數式接口的類型:在Java中,主要有四種類型的函數式接口。KGF28資訊網——每日最新資訊28at.com

Predicate函數式接口:Predicate函數式接口是一種方法接受一個參數,并返回true或false的接口。Predicate函數式接口主要用于比較元素以進行排序或根據應用于傳入的輸入的某些條件來過濾值。Java提供了用于基本類型的Predicate函數式接口,如IntPredicate、DoublePredicate和LongPredicate,分別只接受Integer、Double和Long類型的參數。KGF28資訊網——每日最新資訊28at.com

用法

Predicate predicate = (value) -> value != 0; //或者Predicate predicate = (value) -> test(value);

在上面的代碼片段中,predicate函數根據傳入的值返回true或false。KGF28資訊網——每日最新資訊28at.com

示例:

在這個例子中,我們使用predicate函數式接口和lambda表達式來從一個整數列表中過濾出奇數。KGF28資訊網——每日最新資訊28at.com

import java.util.Arrays;import java.util.List;import java.util.function.Predicate;public class Tester {   public static void main(String args[]) {      List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8);      Predicate<Integer> isEvenNumber = n -> n %2 == 0;      numbers =  numbers.stream().filter(isEvenNumber).toList();      System.out.println(numbers);   }}

編譯運行上述程序后,輸出結果為:KGF28資訊網——每日最新資訊28at.com

[2, 4, 6, 8]

Consumer函數式接口:Consumer函數式接口是一種方法接受一個參數,并且不返回任何值的接口。Consumer函數式接口主要用于執行副作用操作。例如,打印一個元素、添加稱謂等。還有其他變種的Consumer,比如BiConsumer。BiConsumer函數式接口可以接受兩個參數。Java提供了用于基本類型的Consumer函數式接口,如IntConsumer、DoubleConsumer和LongConsumer,分別只接受Integer、Double和Long類型的參數。KGF28資訊網——每日最新資訊28at.com

用法:

//定義Consumer consumer = (value) -> System.out.println(value);// 或者Consumer consumer1 = System.out::println;// 使用Consumer consumer2 = (value) -> accept(value);

示例:

在這個例子中,我們借助lambda表達式和方法引用,使用consumer函數式接口來打印整數列表中的所有數字。KGF28資訊網——每日最新資訊28at.com

import java.util.Arrays;import java.util.List;import java.util.function.Consumer;public class Tester {   public static void main(String args[]) {      List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8);      Consumer<Integer> consumer = (value) -> System.out.println(value);      Consumer consumer1 = System.out::println;      System.out.println("Printing using consumer functional interface as lambda expression");      numbers.forEach(consumer);      System.out.println("Printing using consumer functional interface as method reference");      numbers.forEach(consumer1);   }}

編譯運行程序結果如下:KGF28資訊網——每日最新資訊28at.com

Printing using consumer functional interface as lambda expression12345678Printing using consumer functional interface as method reference12345678

Supplier函數式接口:Supplier函數式接口是一種沒有任何參數傳遞且會返回一個值的接口。Supplier函數式接口主要用于延遲生成值。例如,獲取一個隨機數,生成一系列數字等。KGF28資訊網——每日最新資訊28at.com

用法:

//定義Supplier supplier = () -> Math.random() * 10;// 使用Supplier supplier1 = () -> get();

示例:

在這個例子中,我們借助lambda表達式,使用Supplier函數式接口來獲取一個隨機數。KGF28資訊網——每日最新資訊28at.com

import java.util.ArrayList;import java.util.List;import java.util.function.Supplier;public class Tester {   public static void main(String args[]) {      Supplier<Integer> supplier = () -> (int)(Math.random() * 10);      List<Integer> randomNumbers = new ArrayList<>();      // generate 10 random numbers      for(int i = 0; i< 10; i++) {         randomNumbers.add(supplier.get());      }      System.out.println(randomNumbers);   }}

編譯并運行程序,得出運行結果:KGF28資訊網——每日最新資訊28at.com

[0, 8, 8, 8, 8, 5, 7, 5, 5, 9]

Function函數式接口:Function函數式接口是一種方法接受一個參數并返回一個值的接口。Function函數式接口主要用于獲取處理后的值。例如,獲取一個元素的平方,修剪字符串值等。還有其他的Function變體,比如BiFunction。BiFunction函數式接口可以接受兩個參數。Java還提供了針對基本類型的Function函數式接口,如IntFunction、DoubleFunction和LongFunction,分別只接受Integer、Double和Long類型的參數。還有兩個更實用的接口,UnaryOperator擴展了Function接口,BinaryOperator擴展了BiFunction接口。KGF28資訊網——每日最新資訊28at.com

用法:

//定義Function function = (value) -> Math.random() * 10;// 使用Function function1 = (value) -> apply(value);

示例:

在這個例子中,我們借助lambda表達式,使用Function函數式接口來獲取一個平方數。KGF28資訊網——每日最新資訊28at.com

import java.util.Arrays;import java.util.List;import java.util.function.Function;public class Tester {   public static void main(String args[]) {      List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8);      Function<Integer, Integer> squared = (value) -> value * value;        List<Integer> squaredNumbers =  numbers.stream().map(squared).toList();      System.out.println(squaredNumbers);   }}

編譯并運行程序,得出運行結果:KGF28資訊網——每日最新資訊28at.com

[1, 4, 9, 16, 25, 36, 49, 64]

注意事項:

在Java 8之前,已經存在的許多接口被注釋為函數式接口,并可以在lambda表達式中使用。例如:KGF28資訊網——每日最新資訊28at.com

  • Runnable ?提供run() 方法
  • Callable ? 提供 call() 方法
  • Actionlistener ? 提供actionPerformed() 方法
  • Comparable ? 提供 compareTo() 方法比較兩個數的大小

示例:

在這個例子中,我們創建了兩個線程。第一個線程使用匿名類創建,第二個線程使用lambda表達式創建。兩者都使用runnable接口來創建線程實例。KGF28資訊網——每日最新資訊28at.com

public class Tester {   public static void main(String args[]) {      // create anonymous inner class object      new Thread(new Runnable() {         @Override public void run() {            System.out.println("Thread 1 is running");         }      }).start();      // lambda expression to create the object      new Thread(() -> {         System.out.println("Thread 2 is running.");      }).start();      }}

編譯并運行程序,結果:KGF28資訊網——每日最新資訊28at.com

Thread 1 is runningThread 2 is running.

本文鏈接:http://m.www897cc.com/showinfo-26-75320-0.htmlJava的函數式接口編程示例

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 前端視角對Rust的淺析

下一篇: 一個超冷門的 Vue3 內置組件,幫我優化了66%的性能!

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

    在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結果進行自定義評分。function_score 提供了一系列的參數和函數讓我們可以根據需求靈活地進行設置。近期
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产自产精品| 欧美午夜一区二区福利视频| 欧美一区二区三区的| 欧美一区二区高清在线观看| 久久久亚洲影院你懂的| 欧美成人精品不卡视频在线观看| 欧美日韩极品在线观看一区| 国产精品乱码一区二三区小蝌蚪 | 亚洲伦伦在线| 亚洲一区二区在线免费观看视频| 欧美一区二区视频观看视频| 欧美大片一区| 国产精品九九| 亚洲第一精品福利| 亚洲午夜一区二区| 免费观看日韩av| 欧美天天在线| 伊人蜜桃色噜噜激情综合| 一区二区电影免费在线观看| 久久精品欧美日韩| 欧美久久视频| 国产在线视频欧美| 夜夜夜精品看看| 久久精品国产亚洲精品| 欧美区视频在线观看| 韩日在线一区| 亚洲午夜精品福利| 欧美mv日韩mv国产网站app| 国产精品久久久一区麻豆最新章节 | 久久久久久色| 欧美午夜欧美| 亚洲福利国产| 欧美亚洲免费电影| 欧美精品一区二区三区一线天视频 | 久久久久久穴| 国产精品videosex极品| 亚洲国产精品www| 香蕉成人久久| 欧美日本国产一区| 精品91久久久久| 亚洲免费人成在线视频观看| 欧美理论电影在线播放| 一区二区视频免费在线观看| 亚洲一区三区视频在线观看| 欧美二区视频| 狠狠色丁香婷婷综合| 亚洲欧美国产视频| 欧美激情中文不卡| 精品91免费| 久久国产免费看| 国产精品呻吟| 亚洲少妇自拍| 欧美日韩国产影院| 亚洲激情偷拍| 麻豆精品一区二区综合av| 国产日韩在线一区| 亚洲天堂视频在线观看| 欧美黑人一区二区三区| 在线观看免费视频综合| 久久精品九九| 国产伦精品一区二区三区四区免费 | 欧美午夜精品久久久久久孕妇| 亚洲黄色一区| 久久男女视频| 国内成人精品视频| 欧美一区亚洲二区| 国产精品你懂的在线| 亚洲少妇最新在线视频| 欧美日韩精品免费 | 久久综合电影一区| 国产一区二区三区四区在线观看| 亚洲欧美在线网| 国产精品国产精品| 亚洲桃花岛网站| 欧美日韩综合在线免费观看| 日韩午夜在线| 欧美日韩免费一区| 一区二区高清视频| 欧美日韩免费一区二区三区视频| 亚洲精品无人区| 欧美成人69av| 亚洲激情视频在线播放| 欧美国产成人在线| 亚洲免费精彩视频| 欧美日韩国产a| 一区二区三区四区蜜桃| 欧美色中文字幕| 亚洲一区二区精品| 国产精品日韩| 欧美主播一区二区三区美女 久久精品人| 国产精品综合视频| 欧美一区二区在线免费播放| 国产午夜精品久久| 久久久午夜视频| 亚洲国产毛片完整版 | 欧美三级视频| 亚洲男人的天堂在线观看| 国产精品丝袜白浆摸在线| 先锋影音国产精品| 国产一区二区在线观看免费| 久久久精品日韩| 亚洲高清免费视频| 欧美日韩国产bt| 亚洲一区二区影院| 国产亚洲一区二区精品| 久久综合伊人77777蜜臀| 亚洲激情啪啪| 国产精品www| 欧美在线综合视频| 亚洲国产色一区| 欧美三级网址| 欧美一区二视频| 亚洲二区视频| 欧美三级视频在线播放| 欧美在线免费一级片| 亚洲承认在线| 欧美日韩一区三区| 欧美有码在线观看视频| 亚洲大片在线| 国产精品sss| 久久久精品国产99久久精品芒果| 亚洲福利视频在线| 欧美午夜不卡在线观看免费| 欧美专区亚洲专区| 亚洲国产视频a| 国产精品成人观看视频免费 | 这里只有精品视频| 国产色综合网| 欧美国产免费| 亚洲欧美日韩综合| 在线精品观看| 国产精品国产三级国产普通话蜜臀 | 亚洲一区二区免费视频| 国产伊人精品| 欧美日韩a区| 久久国产精品99精品国产| 亚洲人线精品午夜| 国产女主播一区| 欧美国产另类| 欧美一区二区三区四区在线观看地址 | 国产原创一区二区| 欧美精品在欧美一区二区少妇| 亚洲欧美国产精品va在线观看| 亚洲第一视频网站| 国产精品视频yy9099| 欧美电影在线观看完整版| 午夜在线视频一区二区区别| 91久久精品一区二区三区| 国产日本欧洲亚洲| 欧美精品一区二| 欧美中文字幕| 在线视频精品一区| 尤物九九久久国产精品的特点| 国产精品jvid在线观看蜜臀 | 国产一区二区高清| 国产亚洲精品一区二555| 亚洲第一福利在线观看| 欧美精品一区二| 欧美视频在线视频| 国产精品网站视频| 亚洲人在线视频| 久久www成人_看片免费不卡 | 国产精品午夜国产小视频| 日韩亚洲成人av在线| 一区二区91| 欧美国产亚洲视频| 亚洲欧洲精品一区二区三区不卡| 有码中文亚洲精品| 欧美一区二区久久久| 韩国欧美一区| 久久中文字幕一区| 国产一区欧美日韩| 亚洲综合国产| 国产精品美女久久| 亚洲一区视频在线观看视频| 欧美一区二区三区精品| 国产欧美在线观看一区| 久久久久国产精品麻豆ai换脸| 国产精品成人观看视频国产奇米| 亚洲中字黄色| 国产免费观看久久| 久久久久久婷| 一区二区电影免费在线观看| 欧美黄色免费网站| 亚洲国产精品一区二区第一页| 国产精品久久久久久户外露出 | 日韩亚洲不卡在线| 狠狠色狠色综合曰曰| 国产午夜精品福利| 欧美日在线观看| 欧美日本中文| 欧美精品日韩一本| 欧美日韩国产一级片| 久热国产精品视频| 亚洲国产成人av| 欧美日韩精品综合| 麻豆av一区二区三区久久| 久久精品亚洲一区二区| 韩日欧美一区| 国产女人水真多18毛片18精品视频| 国产精品网站在线观看| 久久一日本道色综合久久| 亚洲欧美欧美一区二区三区| 一区二区动漫|