java将对象集合中按某字段大小给另一字段添加排名
可以使用Java 8的Stream API和Lambda表达式来实现这个需求。假设有一个包含Student对象的List集合,其中Student类有两个字段:name和score。需要按score字段的大小给另一个字段rank添加排名。
List<Student> students = new ArrayList<>();
// 添加学生对象到集合中
...
// 按score字段大小添加排名到rank字段
int rank = 1;
students.stream()
.sorted(Comparator.comparing(Student::getScore).reversed())
.forEach(s -> s.setRank(rank++));
上述代码使用Stream API将集合转换成一个流,然后按照score字段大小进行排序,排序方式为降序。接着使用forEach方法循环遍历流中的每个学生对象,并给rank字段赋值排名,rank的初始值为1,每次遍历后自增1。最终,集合中的每个Student对象都会得到一个对应的rank值。
需要注意的是,如果集合中有重复的score值,那么它们会得到相同的rank值。如果希望在这种情况下也能得到正确的排名,可以使用Java 8的Stream API的distinct方法去重,或者使用Java 8之前的传统方式实现
原文地址: http://www.cveoy.top/t/topic/humg 著作权归作者所有。请勿转载和采集!