2015-04-06 21 views
3

是否可以使用流來確定該流的子集是否大於閾值。使用Java Streams確定流的子集是否超過閾值

可以說我有年齡的名單,我想觸發某個動作,如果有超過10歲以上20

到目前爲止,我已經嘗試過濾(因爲這將在給我的年齡20),我可以算出數字,這很好,因爲如果檢查數字,我可以做一個正常的,但我覺得我應該能夠走得更遠,更具說明性。

感謝 加文

+0

感謝您添加適當的標籤 – Gavin

回答

3

我不認爲有作爲hasAtLeast(n)用於流的終端操作等,但它足夠簡單結合一些其他的操作來實現此行爲。

假設流是IntStream(它很容易給人的對象流類似的解決方案):

if (stream.filter(i -> i > 20).limit(11).count() > 10) { 

} 

雖然這不是從你已經盡了很大的不同,使用limit()確保只夠流的元素將在觸發操作之前進行評估。

+0

剛剛爲我的域中的對象提出了一個解決方案,我認爲它不會增加任何可讀性到您的解決方案,也許這就是爲什麼沒有'hasAtLeast(n) '。謝謝。 – Gavin

+0

@Eran會不會僅將「動作」應用於實際高於20的條目?這純粹是理論上的,但如果流的某些部分符合條件,是否可以將「動作」應用於整個流? – Eugene

+1

@Eugene條件已經消耗了流,因此您必須創建一個新流才能應用該操作,然後您可以決定應用哪些元素。 – Eran

相關問題