日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDK8 lambda的会话指南–术语表

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK8 lambda的会话指南–术语表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次出現…我寫了一篇與JDK8為我們提供的新方法有關的文章。 最令我興奮的功能是lambda。 我必須承認,在即將成為浪子的第一年(在此期間,我使用C#開發了該產品),我喜歡LINQ和它可以做的漂亮,優雅的事情。 現在,即使擦除仍然在我們上次離開的地方,現在我們有了更好的過濾,更改,遍歷集合以及語法糖旁邊的方法,這也可能使您正確使用四核處理器你向朋友吹牛。 在談論朋友時,這篇文章是與lambda和流處理相關的術語摘要,當他們問您:“ <DKD 8中與lambdas相關的那個地名>是什么? 我無意提供完整列表或lambda指南,如果我說錯了什么或錯過了什么,請告訴我...

功能界面:

根據[jls 8],功能接口是僅具有一個抽象方法的接口,因此表示單個功能協定(在某些情況下,此“單個”方法可以采用具有等效等效簽名的多個抽象方法的形式( [jls7_8.4.2])從超級接口繼承;在這種情況下,繼承的方法在邏輯上表示單個方法。

@FunctionalInterface –用于指示接口應為功能接口。 如果注釋放置在實際上不是的接口上,則會發生編譯時錯誤。

例如:

interface Runnable { void run(); }

Runnable接口是一個非常合適的示例,因為當前存在的唯一方法是run方法。 功能接口的另一個Java“經典”示例是Comparator <T>接口,在下面的示例中是前面提到的接口,并且equals方法繼承自Object ,該接口仍然起作用,因為compare方法是唯一的抽象方法,而equals繼承自超類。

interface Comparator<T> {boolean equals(Object obj);int compare(T o1, T o2);}

流 –根據[牛津詞典],在計算中是連續的數據或指令流,通常具有恒定或可預測的速率。
從JDK 8 流開始,代表一種機制,用于通過計算管道從數據源傳送元素。 流可以用作數組,集合,生成器功能,I / O通道的數據源。 獲取流:

  • 從Collection通過stream()和/或parallelStream()方法;
  • 通過Arrays.stream(Object[])從數組
  • 從流類的靜態工廠方法開始,例如Stream.of(Object[]) , IntStream.range(int, int)或Stream.iterate(Object, UnaryOperator) ;
  • 可以從BufferedReader.lines();獲得文件的行BufferedReader.lines();
  • 可以從Files中的方法獲取文件路徑流。
  • 可以從Random.ints();獲得隨機流Random.ints();
  • JDK中的許多其他流承載方法, including BitSet.stream() , Pattern.splitAsStream(java.lang.CharSequence)和JarFile.stream() 。

流操作 – 對流執行的操作。 從流操作的角度來看,有兩種類型的操作:中間操作和終端操作

流中間操作 –縮小流內容的操作。 中間操作本質上是惰性的–實際不更改流的內容,而是創建另一個更窄的流。 僅在調用終端操作時才開始流的遍歷。

  • filter –根據提供的謂詞過濾流
  • map –通過將映射函數應用于初始流中的每個元素來創建新流(每種數字類型的對應方法:int,long,double)
  • flatMap –一種操作,其作用是對流的元素進行一對多轉換,然后將結果元素展平為新的流。 例如,如果訂單是采購訂單流,并且每個采購訂單都包含一個訂單項集合,則以下內容將生成一個訂單項流:
orderStream.flatMap(order -> order.getLineItems().stream())
  • 與眾不同–返回不同的操作流
  • 已排序–返回已排序操作流
  • peek –調試專用的方法,該方法返回由該流元素組成的流,所提供的操作在每個元素上執行

例如:

list.stream().filter(filteringFunction).peek(e -> {System.out.println("Filtered value: " + e); });.map(mappingFunction).peek(e -> {System.out.println("Mapped value: " + e); });.collect(Collectors.intoList());
  • limit –返回當前流的截斷版本(不超過元素的限制數量)
  • substream –返回一個由剩余元素組成的流,該元素從起始位置開始,或者在startPosition和endPosition之間

流終端操作 –遍歷流以產生結果或副作用。 執行完終端操作后,該流被視為已消耗(在已消耗的流上調用另一個操作將拋出IllegalStateException )。 終端操作本質上是急切的,除了iterator()和splititerator()為那些在API中找不到所需功能的人提供了擴展機制。

  • forEach –將提供的操作應用于流的每個元素。 也存在forEachOrdered版本
  • toArray –將流的元素提取到數組中
  • 減少–減少方法
  • 收集-可變還原法
  • min –計算流的最小值
  • max –計算流的最大值
  • count –計算流中的元素
  • anyMatch –如果存在與提供的條件匹配的元素,則返回true
  • allMatch –如果所有元素都匹配,則返回true
  • noneMatch –如果所有元素都不匹配,則返回true
  • findFirst –查找與提供的條件匹配的第一個元素
  • findAny –返回流中的元素

流管道 :由一個源,隨后的零個或多個中間操作和一個終端操作組成。

分離器 –用于遍歷和分配源元素的分離器。 可以將其用于遍歷,估計元素數量或將其拆分為多個拆分器

歸約 –歸約運算(或折疊)采用一系列輸入元素,并通過重復應用組合運算將它們組合成單個匯總結果。 歸約運算可以是計算總和,最大值,最小值,計數或收集列表中的元素。 簡化操作也可以并行化,只要所使用的函數是關聯的且無狀態的即可。 用于減少的方法是reduce()

例如:使用和減少:

int sum = numbers.stream().reduce(0, (x,y) -> x + y);

要么

int sum = numbers.stream().reduce(0, Integer::sum);

可變歸約 –是一種在處理流中的元素時將輸入元素累積到可變結果容器(StringBuilder或Collection)中的操作。

例如:

String concatenated = strings.reduce("", String::concat)

謂詞 –確定輸入對象是否符合某些條件的功能接口

我希望這個精簡的列表對您有所幫助,并且在您需要在一頁上使用所有這些術語的時候將其保留在書簽中。

如果您發現缺少的東西,請告訴我,以便糾正。

所以……我希望您有個不錯的降臨時間,并祝您生日快樂/快樂/快樂,但最重要的是,祝您圣誕節平安!

參考: 關于JDK8的lambda的會話指南– Java出現日歷博客上來自JCG合作伙伴 Attila Mihaly Balazs 的術語表 。

翻譯自: https://www.javacodegeeks.com/2013/12/a-conversational-guide-for-jdk8s-lambdas-a-glossary-of-terms.html

總結

以上是生活随笔為你收集整理的JDK8 lambda的会话指南–术语表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。