我在Java中有一个记录的类diffSeconds。
diffSeconds
class fileObj { public String fileName; public Date modificationTime; public long diffSeconds; fileObj() { modificationTime = null; } }
我有一个forloop,使fileObj该类的多个实例并将它们添加到列表中。
fileObj
List<fileObj> fileView = new ArrayList<fileObj>(); for(int j=0; j<10; j++) { fileView.add(new fileObj()); }
假设每个类都有一个diffSeconds分配给他们的值,我该如何根据值(最大的在前)排序列表
您可以使用Collections.sort(fileView);并实现Comparable接口并编写compareTo(fileObj arg0)决定对列表进行排序的实现方法。
Collections.sort(fileView)
Comparable
compareTo(fileObj arg0)
为了实施,
class fileObj implements Comparable<fileObj> @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<fileObj> fileView = new ArrayList<fileObj>(); 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<fileObj> { 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; } }