如何在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; } }
使用比较器或类似的接口。