我有一个Arraylist包含记录列表的记录,在每个记录中我都有百分比字段.
我试图显示两者之间有百分比的学生数量
40%至50%,51%至60%,61%至70%,71%至80%,81%至90%,91%至100%.
例如,假设有5名学生在61%到70%之间,我想将计数作为5.如何动态计算所有具有指定百分比的学生.任何人都可以建议我在这方面采取的方法.
不计算学生,计算他们的百分比,像这样:
int count = list.stream()
.map(Student::getPercentage)
.filter(n -> n >= low && n <= high)
.count();
Run Code Online (Sandbox Code Playgroud)
作为Collection,ArrayList允许我们流式传输Student对象,然后将其转换为百分比流,然后对其进行过滤以仅保留所需范围内的那些百分比,然后对其进行计数.
收集并迭代10个点括号的范围:
new TreeMap<>(list.stream()
.collect(Collectors.groupingBy(s -> s.getPercentage() / 10, Collectors.counting()))
.forEach((r, n) -> System.out.print(r + "0% to " + ++r + "0% had " + n));
Run Code Online (Sandbox Code Playgroud)
这将整数除以10的结果分组(int如果它不是整数,则添加转换为百分比),添加下游计数操作,然后处理每个操作.
TreeMap包装器按顺序放置百分比范围.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |