2012-09-22 5 views
-3

가능한 중복 :
How to sort an arraylist of objects by a property?
What is the sorting algorithm for Java자바에서 객체를 정렬하는 방법은 무엇입니까?

나는 diffSeconds의 기록을 유지 자바의 클래스가 있습니다.

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

     fileObj() 
     { 
      modificationTime = null; 
     } 
    } 

은 내가 fileObj 클래스의 여러 인스턴스를하게하고 목록에 추가하는 forloop 있습니다. 난 (제 최대) 값에 따라 목록

+0

@ Mike L .: 숙제 태그 위키를 읽어보십시오. – Mat

+0

가능한 [객체에 의해 객체의 arraylist를 분류하는 방법?] (http://stackoverflow.com/questions/2535124/how-to-sort-an-arraylist-of-objects-by-a-property) 및 [자바에서 객체의 배열을 정렬하는 법] (http://stackoverflow.com/questions/3077746/how-to-sort-an-array-of-objectspoints-in-java?rq=1) – DNA

답변

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; 
    } 

Reference:

상세 코딩.

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; 
    } 
} 
+0

완벽하고, 고맙습니다! – user648244

0
comparator

사용 또는 comparable 인터페이스를 주문하는 방법은 각각의 클래스에 할당 된 이들 diffSeconds 값을 갖는다 고 가정

List<fileObj> fileView = new ArrayList<fileObj>(); 
for(int j=0; j<10; j++) 
     { 
     fileView.add(new fileObj()); 
     } 

. 아래 링크에서

관련 문제