java STREAM流 学生成绩分组之后 在求出每组大于5的数据
时间: 2024-03-28 15:38:42 浏览: 50
好的,如果您想要使用 Java 的 Stream API 对学生成绩进行分组,并求出每组中大于5的数据,可以按照以下步骤进行操作:
1. 定义一个 Student 类来表示学生信息,包含姓名、成绩等属性:
```
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
// getter and setter methods
}
```
2. 准备一些学生数据,存储在一个 List 中:
```
List<Student> students = Arrays.asList(
new Student("Tom", 68),
new Student("Jerry", 85),
new Student("Lucy", 72),
new Student("John", 92),
new Student("Bob", 56),
new Student("Alice", 78),
new Student("Lisa", 89),
new Student("Peter", 44)
);
```
3. 使用 Stream 的 collect 方法,按照学生的成绩进行分组:
```
Map<Integer, List<Student>> groups = students.stream()
.collect(Collectors.groupingBy(Student::getScore / 10)); // 按照成绩的十位数分组
```
4. 遍历每个分组,使用 filter 操作找到成绩大于5的学生,然后使用 count 统计符合条件的学生个数:
```
for (List<Student> group : groups.values()) {
long count = group.stream()
.filter(s -> s.getScore() > 50)
.count();
System.out.println("Group: " + group.get(0).getScore() + " ~ " + (group.get(0).getScore() + 9) + ", count: " + count);
}
```
这样就可以找到每个分组中成绩大于5的学生,并统计个数了。注意,这里使用了 group.get(0).getScore() 和 (group.get(0).getScore() + 9) 来表示每个分组的成绩区间,具体实现还需要根据您的具体需求进行调整。希望这些信息对您有所帮助。
阅读全文