2011-07-24 60 views
2

排序我有一個記錄對象如何對象的列表與某些特定屬性

public Record{ 
    double simiADD; 
} 

我有記錄對象的名單,我想排序simiADD。 simiADD的價值較低的記錄應該首先發生,並且更多simiADD值的記錄應該在排序列表中稍後出現。我想用分離的方法做這個操作,而不是在Record類中實現比較器。

+0

什麼是你的問題? –

回答

4

如果你不想定義記錄類中的比較功能:

Collections.sort(recordList, new Comparator<Record>() { 
     public int compare(Record object1, Record object2) { 
      return Double.compare(object1.simiADD, object2.simiADD); 
     } 
    } 
); 
1

我假定你的意思是你不想在你的課堂上實現「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); 
    } 
} 
1

這裏是那麼簡單的使用任何類型的方法將使用覆蓋的compareTo爲Record類的代碼示例,

public class Record implements Comparable<Record> { 
    public double simiADD; 

    public int compareTo(Record r) { 
     return Double.compare(this.simiADD, r.simiADD); 
    } 
} 

相關問題