小编典典

如何在Java中排序对象?

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分配给他们的值,我该如何根据值(最大的在前)排序列表


阅读 193

收藏
2020-12-03

共1个答案

小编典典

您可以使用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;
    }
}
2020-12-03