可能重复:
How to sort an arraylist of objects by a property?
What is the sorting algorithm for Java
我在java中有一个记录diffSeconds
。
class fileObj
{
public String fileName;
public Date modificationTime;
public long diffSeconds;
fileObj()
{
modificationTime = null;
}
}
我有一个forloop,它创建了fileObj
类的多个实例,并将它们添加到列表中。
List<fileObj> fileView = new ArrayList<fileObj>();
for(int j=0; j<10; j++)
{
fileView.add(new fileObj());
}
假设每个类都分配了diffSeconds
个值,我如何根据值(最大的第一个)来订购列表
答案 0 :(得分:2)
您可以使用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;
}
}
答案 1 :(得分:0)
使用comparator或comparable接口。
答案 2 :(得分:0)