2015-02-10 80 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() 
    ) 
); 

至于跳过基于谓词的元素,流不支持这一点。你可以使一些丑陋的东西变得难看,并使其工作,但你应该使用一个正常的循环。