07 Java8 流式API 終端操作

2021-09-22 02:47:45 字數 2720 閱讀 1453

流的終止操作用於觸發流進行流水線處理, 產生流水線處理的結果.結果型別可為任意型別.

終端api 會觸發流進行流水線運算, 常用的終端api 如下:

api 簽名

描述boolean allmatch(predicate<? super t> predicate)

短路式檢查所有元素是否都符合條件, 遇到乙個不符合的則結束

boolean anymatch(predicate<? super t> predicate)

短路式檢查是否至少存在乙個元素符合條件,遇到乙個符合條件的則結束

boolean nonematch(predicate<? super t> predicate)

短路式檢查是否不存在符合條件的元素, 遇到乙個符合條件的則結束

optional findfirst()

返回流中第乙個元素

optional findany()

返回流中任意乙個元素

long count()

返回流中元素的數量

optional max(comparator<? super t> comparator)

根據自定義比較規則, 返回流中最大的元素

optional min(comparator<? super t> comparator)

根據自定義比較規則, 返回流中最小的元素

void foreach(consumer<? super t> action)

內部迭代, 消費流中元素

t reduce(t identity, binaryoperator accumulator)

將流中元素迭代式做二元運算, 最終返回乙個值. 有初始值,返回結果必非空

optional reduce(binaryoperator accumulator)

將流中元素迭代式做二元運算, 最終返回乙個值. 無初始值,返回結果可能為空, 所以返回值為optionanl

短路式校驗,判斷流中元素是否全部符合謂詞條件.

@test

public

void

test_allmatch()

);system.out.

println

("所有員工年齡都為男性:"

+ b1)

;}

短路式校驗流中是否存在符合謂詞條件的元素.

@test

public

void

test_anymath()

);system.out.

println

("員工列表中是否包含女性:"

+ b)

;}

短路式校驗, 判斷流中元素是否都不符合條件

@test

public

void

test_nonemath()

);system.out.

println

("員工列表中沒有30歲以下的員工:"

+ b1)

;}

短路式處理, 返回流中第乙個元素, 可能為空, 所以返回值為optional.

@test

public

void

test_findfirst()

短路式處理, 返回流中任意的乙個元素

@test

public

void

test_findany()

返回流中元素數量

@test

public

void

test_count()

自定義排序規則, 返回流中最大的元素

@test

public

void

test_max()

自定義排序規則, 返回流中最小的元素

@test

public

void

test_min()

採用內部迭代方式依次消費流中元素, 也就是遍歷流元素. 可以輸出流元素資訊或者修改流元素屬性等操作.

// 內部迭代, 消費流元素

@test

public

void

test_foreach()

reduce 的計算方式類似於遞迴, 是拿前面計算的結果和流中下乙個元素做運算, 返回結果再與下乙個元素做運算, 直到和最後乙個元素做完運算, 返回乙個結果。

// 歸約

@test

public

void

test_reduce()

java學習day07 常用API

2018.6.11 1.object 所有類的父類 tostring 列印物件的位址值 hashcode 物件的儲存位置的演算法 equals 比較的是記憶體位址,比的是值。對於 如果作用於基本資料型別的變數,則直接比較其儲存的 值 是否相等 如果作用於引用型別的變數,則比較的是所指向的物件的位址 ...

關於java8中的流式計算

流的出現是為了獲得更高的效能,但並不是說使用了流之後效能肯定會得到提公升,因此,我們需要謹慎使用。尷尬,你以為用了流式計算會快很多,然而測試結果並不是 public class streamtest public void setid int id public string getname pub...

Java 8 Streams部分API簡介

寫在前面,下面的鏈式呼叫曾經讓我驚豔過。有時,我會想,一行 如此之長是否真的合適,出了錯也許會比較難找,比如某個set返回不是msginfo物件而是null的話,定位都會是這一行 然而,這不妨礙心中莫名其妙的自豪感,身為碼農,最重要的不是對自己流利 和自身高尚品質的絕對自信麼?笑 d msginfo...