2012-05-13 4 views
1

날짜별로 상태 보고서를 정렬해야합니다. addItem 메서드를 호출하기 전에 정렬을 수행해야합니다. 그렇지 않으면 보고서 날짜별로 이전 보고서와 비교해야합니다. getReportDate() [JVDate 타입의] 메소드는 상태보고의보고 날짜를 얻는 데 사용할 수 있다고 명시되어 있습니다. 당신은 상태 보고서를 정렬하는 데 도움을 주시겠습니까 :날짜순으로 정렬하려면 어떻게해야합니까?

public void doImport(TRDataReader in) 
     throws IOException, TRException   
    { 

     in.start(getClassTag()); // get the class tag 
     // import the set's flags from a datareader 
     importFlags(in); 
     beginLoad(); 
     final String restag = new TRStatusReport().getClassTag(); 
     while (in.nextToken (restag)) { 
      addItem (new TRStatusReport (in)); 
     } 
     endLoad(); 
     in.end (getClassTag()); 
    } 
+1

'JVDate'란 무엇입니까? 그것은 Comparable을 구현합니까? –

+0

정렬 하시겠습니까? 배열? '리스트'? 선언은 어디에 있습니까? –

답변

2

를 간단하게 사용하는 Java에 내장 된 적절한 비교를 지정하여 정렬 알고리즘. 다음과 같은 것 :

public void doImport(TRDataReader in) throws IOException, TRException { 
    in.start(getClassTag()); // get the class tag 
    importFlags(in); // import the set's flags from a datareader 

    // Add the reports to a temporary list first. 
    final String restag = new TRStatusReport().getClassTag(); 
    List<TRStatusReport> list = new ArrayList<TRStatusReport>(); 
    while (in.nextToken(restag)) { 
     list.add(new TRStatusReport(in)); 
    }   

    // Now sort them. 
    TRStatusReport[] array = list.toArray(new TRStatusReport[]{}); 
    Collections.sort(array, new Comparator<TRStatusReport>() { 
     @Override 
     public int compare(TRStatusReport o1, TRStatusReport o2) { 
      return o1.getReportDate().compareTo(o2.getReportDate()); 
     } 
    }); 

    // Add it to the internal list. 
    beginLoad(); 
    for (int i = 0; i < array.length; i++) { 
     addItem(array[i]); 
    } 
    endLoad(); 
    in.end(getClassTag()); 
} 

Java Date 객체가 아닌 경우 날짜를 비교하는 방법을 찾아야합니다. 저는이 코드를 맹목적으로 작성했습니다 (객체가 무엇인지 모릅니다). 그리고 몇몇 가정을 가지고 있습니다. 예를 들어 beginLoad() 및 endLoad() 메서드는 목록 또는 읽기 용 메서드입니까? ... 그렇다면 객체가로드되어 임시 목록에 추가되는 while 절 주위에 배치해야 할 수도 있습니다.

+0

좀 더 구체적으로 기재 할 수 있습니까? ... 만약 compareTo가되어야하는 compare라면, 나는 그것을 고쳤습니다. 위의 내용은 복사 및 붙여 넣기가 아닙니다 ... 몇 번의 조작이 필요할 수 있습니다. :) –

+0

내가 알아 차 렸던 것을 고쳤다. –

+0

@jaco 코드 섹션을 어디에 사용해야하는지 알려주시겠습니까? addItem 메소드를 제거해야합니까? 또한 reportList가 변수로 해석 될 수 있음을 보여줍니다. 또한 compareTo (JVDate) 메서드는 JVDate 형식에 대해 정의되지 않았습니다. – user1391873

관련 문제