我有一个记录对象
public Record{
double simiADD;
}
我有一个Record对象列表,我想在simiADD上排序。应首先出现simiADD值较小的记录,并且稍后将在排序列表中出现具有更多simiADD值的记录。我想在一个单独的方法中执行此操作,而不是在Record类中实现比较器。
答案 0 :(得分:4)
如果您不想在Record类中定义比较函数:
Collections.sort(recordList, new Comparator<Record>() {
public int compare(Record object1, Record object2) {
return Double.compare(object1.simiADD, object2.simiADD);
}
}
);
答案 1 :(得分:1)
我认为你的意思是你不想在你的班级中实现“可比较”的界面。使用Comparator和Collection的排序静态方法:
import java.util.*;
public class EmpSort {
static final Comparator<Employee> SENIORITY_ORDER =
new Comparator<Employee>() {
public int compare(Employee e1, Employee e2) {
return e2.hireDate().compareTo(e1.hireDate());
}
};
// Employee database
static final Collection<Employee> employees = ... ;
public static void main(String[] args) {
List<Employee>e = new ArrayList<Employee>(employees);
Collections.sort(e, SENIORITY_ORDER);
System.out.println(e);
}
}
答案 2 :(得分:1)
这是一个代码示例
public class Record implements Comparable<Record> {
public double simiADD;
public int compareTo(Record r) {
return Double.compare(this.simiADD, r.simiADD);
}
}
然后简单地使用任何排序方法将使用重写的compareTo作为Record类。
答案 3 :(得分:0)
阅读Comparable接口的JavaDoc。 http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html。或者你是说“不想实施可比较”而不是“比较者”?
实际上,Comparable非常标准,这有利于维护代码。集合中的排序方法基于它,所以它运作良好。