排序我有一個記錄對象如何對象的列表與某些特定屬性
public Record{
double simiADD;
}
我有記錄對象的名單,我想排序simiADD。 simiADD的價值較低的記錄應該首先發生,並且更多simiADD值的記錄應該在排序列表中稍後出現。我想用分離的方法做這個操作,而不是在Record類中實現比較器。
排序我有一個記錄對象如何對象的列表與某些特定屬性
public Record{
double simiADD;
}
我有記錄對象的名單,我想排序simiADD。 simiADD的價值較低的記錄應該首先發生,並且更多simiADD值的記錄應該在排序列表中稍後出現。我想用分離的方法做這個操作,而不是在Record類中實現比較器。
如果你不想定義記錄類中的比較功能:
Collections.sort(recordList, new Comparator<Record>() {
public int compare(Record object1, Record object2) {
return Double.compare(object1.simiADD, object2.simiADD);
}
}
);
閱讀JavaDoc for Comparable接口。 http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html。還是你的意思是「不想實現Comparable」而不是「Comparator」?
其實相當實用,這對維護你的代碼很有好處。 Collections中的排序方法基於它,所以它工作得很好。
我假定你的意思是你不想在你的課堂上實現「Comparable」接口。使用比較器和收藏的排序靜態方法:
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);
}
}
這裏是那麼簡單的使用任何類型的方法將使用覆蓋的compareTo爲Record類的代碼示例,
public class Record implements Comparable<Record> {
public double simiADD;
public int compareTo(Record r) {
return Double.compare(this.simiADD, r.simiADD);
}
}
。
什麼是你的問題? –