-3

重複の可能性:
オブジェクトの配列リストをプロパティでソートする方法は?
Javaのソートアルゴリズムは何ですか

の記録を保持するJavaのクラスがありdiffSecondsます。

class fileObj
    {
        public String fileName; 
        public Date modificationTime; 
        public long diffSeconds;     

        fileObj()
        {
            modificationTime = null; 
        }
    }

fileObjクラスの複数のインスタンスを作成し、それらをリストに追加するforloop があります。

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

以下のリンクを見てください:-

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

オブジェクトをパラメーターとして取り、クラスに同等のインターフェイスを実装する sort メソッドを検索します。

于 2012-09-22T09:07:03.453 に答える
0

コンパレータまたは同等のインターフェイスを使用します。

于 2012-09-22T09:00:15.747 に答える