根据arraylist中的百分比计算记录数

Nit*_*hin 1 java arraylist

我有一个Arraylist包含记录列表的记录,在每个记录中我都有百分比字段.

我试图显示两者之间有百分比的学生数量

40%至50%,51%至60%,61%至70%,71%至80%,81%至90%,91%至100%.

例如,假设有5名学生在61%到70%之间,我想将计数作为5.如何动态计算所有具有指定百分比的学生.任何人都可以建议我在这方面采取的方法.

Boh*_*ian 6

不计算学生,计算他们的百分比,像这样:

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包装器按顺序放置百分比范围.