java list stream() 根据学生成绩,为学生评级字段赋值
时间: 2024-12-15 14:28:43 浏览: 8
在Java中,如果你有一个`List<Student>`,其中包含学生的成绩信息,你可以使用`Stream API`来进行操作。假设`Student`类有一个`score`属性表示分数,你可以创建一个新的`IntStream`,过滤出评分,然后根据条件给每个学生分配等级(如A、B、C等)。以下是一个简单的例子:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
class Student {
private String name;
private int score;
// getters and setters...
public String getGrade(int minScoreForGrade) {
if (score >= minScoreForGrade * 100) {
return "A";
} else if (score >= minScoreForGrade * 90) {
return "B";
} else if (score >= minScoreForGrade * 80) {
return "C";
} else {
return "D"; // 或者根据需要添加更低等级的判断
}
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Tom", 95),
new Student("Jerry", 85),
new Student("Spike", 70)
);
int minScoreForGrade = 80; // 设定最低等级分数
List<Student> gradedStudents = students.stream()
.map(student -> {
student.setRating(student.getGrade(minScoreForGrade));
return student;
})
.collect(Collectors.toList());
// 现在gradedStudents列表包含了每个学生及其相应的等级
System.out.println(gradedStudents);
}
}
```
在这个例子中,我们首先通过`stream()`获取流,然后用`map()`函数对每个学生对象应用`getGrade`方法,并更新其评级字段。最后,我们使用`collect()`将处理过的流转换回`List<Student>`。
阅读全文