如何在java中对对象进行排序?

可能重复:
如何按属性对对象的arylylist进行排序?
什么是Java的排序算法

我在java中有一个类来保存diffSeconds记录。

 class fileObj { public String fileName; public Date modificationTime; public long diffSeconds; fileObj() { modificationTime = null; } } 

我有一个forloop,它创建了fileObj类的多个实例,并将它们添加到列表中。

 List fileView = new ArrayList(); for(int j=0; j<10; j++) { fileView.add(new fileObj()); } 

假设每个类都分配了diffSeconds值,我如何根据值(最大的第一个)来排序列表

您可以使用Collections.sort(fileView) ; 并实现Comparable接口和编写实现的方法compareTo(fileObj arg0) ,它决定对列表进行排序。

为了实施,

 class fileObj implements Comparable @Override public int compareTo(fileObj arg0) { if(this.diffSeconds > arg0.diffSeconds ) return 0; else return 1; } 

参考:

细节编码。

 import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; public class SortExample { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub List fileView = new ArrayList(); for(int j=0; j<10; j++) { fileView.add(new fileObj(j)); } Collections.sort(fileView); for(fileObj obj: fileView){ System.out.println("File " + obj.getDiffSeconds()); } } } class fileObj implements Comparable { public String fileName; public Date modificationTime; public long diffSeconds; fileObj() { modificationTime = null; } fileObj(long diffSeconds) { modificationTime = null; this.diffSeconds = diffSeconds; } @Override public int compareTo(fileObj arg0) { if(this.diffSeconds > arg0.diffSeconds ) return 0; else return 1; } public long getDiffSeconds() { return diffSeconds; } public void setDiffSeconds(long diffSeconds) { this.diffSeconds = diffSeconds; } } 

使用比较器或类似的接口。

请看下面的链接: –

http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html

搜索sort对象作为参数并在类中实现类似的接口。