-3

可能重复:
如何按属性对对象的数组列表进行排序?
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分配给它们的值,我如何根据值对列表进行排序(最大优先)

4

3 回答 3

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;
    }
}
于 2012-09-22T09:11:20.460 回答
0

使用比较器可比较的接口。

于 2012-09-22T09:00:15.747 回答
0

看看下面的链接:-

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

搜索以对象为参数的排序方法,并在您的类中实现可比较的接口。

于 2012-09-22T09:07:03.453 回答