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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java8 streams_Java 8 Streams:过滤和谓词否定

發(fā)布時(shí)間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8 streams_Java 8 Streams:过滤和谓词否定 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java8 streams

最近,有關(guān)LJC 郵件列表的成員在流中.filter方法中使用謂詞否定的有趣討論,因此我認(rèn)為值得在博客文章中進(jìn)行總結(jié)。 討論是關(guān)于使用.filter和否定謂詞的方法。

  • 這篇文章的代碼可以在我的github帳戶(hù)中找到 。

也許這就是您可能會(huì)想到的方式,但是這里有一些替代方法。

Stream.of(1, 2, 3, 4, 5, 6, 7).filter(((Predicate) c -> c % 2 == 0).negate())

答案1:編寫(xiě)謂詞實(shí)用程序方法

您可以通過(guò)編寫(xiě)執(zhí)行取反的實(shí)用程序方法來(lái)簡(jiǎn)化此操作。

public static <R> Predicate<R> not(Predicate<R> predicate) {return predicate.negate(); }

這樣可以使代碼更加整潔。

Stream.of(1, 2, 3, 4, 5, 6, 7).filter(not(c -> c % 2 == 0))
  • 在github上查看源代碼

答案2:使用標(biāo)識(shí)函數(shù)將方法引用轉(zhuǎn)換為謂詞

我們使用實(shí)用程序方法將方法引用轉(zhuǎn)換為謂詞。

public static <T> Predicate<T> predicate(Predicate<T> predicate) {return predicate; }

盡管代碼不是那么整潔。

Stream.of("Cat", "", "Dog").filter(predicate(String::isEmpty).negate())
  • 參考資料: 亨氏的Lambda減少原理

答案3:使用not(!)運(yùn)算符

使用熟悉的not運(yùn)算符。

Stream.of(1, 2, 3, 4, 5, 6, 7).filter((c -> c % 2 != 0))Stream.of("Cat", "", "Dog").filter(str -> !str.isEmpty())

該代碼更簡(jiǎn)單,并且立即熟悉。

有人爭(zhēng)辯說(shuō),方法引用在重構(gòu)時(shí)通常比簡(jiǎn)單的lambda難于閱讀,并且比較棘手,并且流鏈中混合lambda和方法引用會(huì)使讀者感到困惑。 參考: Java SE 8最佳實(shí)踐

當(dāng)您使用方法引用并希望IDE創(chuàng)建該方法時(shí), IntelliJ會(huì)將其創(chuàng)建為靜態(tài)方法,并將對(duì)象作為第一個(gè)參數(shù)。 使用not運(yùn)算符可以避免這種情況。

以下是一些有用的參考:

  • Java 8 Lambdas:面向大眾的函數(shù)式編程
  • Java SE 8最佳實(shí)踐
  • 亨氏的Lambda減少原理
  • LJC郵件列表
  • 方法引用在某些JDK版本中存在錯(cuò)誤

翻譯自: https://www.javacodegeeks.com/2015/11/java-8-streams-filter-and-predicate-negation.html

java8 streams

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的java8 streams_Java 8 Streams:过滤和谓词否定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。