2015-02-10 50 views
0

假設您有一個表示學生分數的整數流。 [10,50,100,95,80,70,65,90,10,100]並且pass-mark大於或等於50.你如何得到下一個'n'學生失敗的學生'm'的數量通過。需要從目前的位置開始只考查n + m個學生。在java 8個流中計算合格和不合格謂詞

在該示例中,對於起始位置= 0和n = 3 [50,100,95],m = 1 [10]。 給定流和數字'n',需要找出'm'。

+1

流API中沒有「從當前位置開始」。您爲整個流定義一個終端操作;它不必處理所有項目,但在每種情況下都會消耗流。 – Holger 2015-02-10 09:24:54

回答

2

要計算通過和失敗謂詞,你可以使用

.collect(
    Collectors.partitioningBy(
     n -> n > 50, 
     Collectors.counting() 
    ) 
); 

至於跳過基於謂詞的元素,流不支持這一點。你可以使一些醜陋的東西變得難看,並使其工作,但你應該使用一個正常的循環。