java - java中对对象进行排序后存储排序顺序

标签 java collections

让我们举一个简单的例子。这是一个类

public class Student
{int classRank;
 String Name
 float marks
}

对于这个类,假设有 5 个对象 s1、s2、s3、s4、s5,我使用比较器按顺序对对象进行排序。我的问题是我可以在比较器运行的同时以某种方式存储 classRank 吗?如果没有,还有比这样做更好的方法

int rank = 0;
for(Student s: students)
{ s.setClassRank(++rank);
}

最佳答案

您无法在比较器运行的同时存储排名,因为,没有什么可存储的:在比较器完成之前,排名不是最终的。此外,在排序运行时修改对象并不是一个好主意。

如果您必须存储排名,请使用您的代码,或应用类似的 for 循环,并使用循环变量来设置排名。然而,这可能是一个糟糕的设计,因为一旦你将一些学生添加到列表的后面,排名就会发生变化。更好的设计将单独保存学生对象,并对连接到学生和学生排名列表的不同对象进行排序。这可以让您为同一组学生保留多个排名列表。

关于java - java中对对象进行排序后存储排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32150051/

相关文章:

java - 玩2.2.2(Scala),如何处理HttpServletRequests

java - 如何在 spring 4.* 中通过注解创建多个字段的约束 validator

java - 为什么不更常用 Collections.checkedMap 和 friend ?

arrays - 将元素保存在Map/Array/Collection中……Grails

c# - 为什么 C# 和 Java 要求所有内容都在一个类中?

java - 在 Java 中计算每个键的最佳实践是什么

java - 为什么我的微调器没有填充

java - java hashcode()面试题

java - 多个数据结构中的相同数据 - 正确的方法

java - 列表删除方法是原始的