2013-07-22 3 views
0

저는 Java가 처음이므로 Comparator를 구현하는 데 도움이됩니다. 다음 값을 가진 QualityData 형식의 Arraylist가 있습니다.Java에서 COMPARATOR 구현

**Sequence Nr** **Súb Sequence_nr** **flag** 
     100    1    True 
     100    1    False 
     101    1    True 
     100    2    False 
     100    1    False 
     100    3    True 

원하는 출력 순서 : order_ng는 Sequence_Nr 및 Sub_sequence_nr을 기반으로합니다.

**Sequence Nr** **Súb Sequence_nr** **flag** 
     100    1    True 
     100    1    False 
     100    1    False 
     100    2    False 
     100    3    True 
     101    1    True 

나는 Sequence_number, sub_sequence_number 및 부울 플래그로 클래스가 있습니다.

public class QualityData{ 
private int sequence_number; 
private int sub_sequence_nr; 
private boolean flag; 
//GETTER, SETTER METHODS 
public static Comparator<QualityData> COMPARATOR=new Comparator<QualityData>(){ 
    public int compare(QualityData data1, QualityData data2){ 
     return int (data1.getSequence_nr()-data2.getSequence_nr()); 
    } 
}; 
} 

그리고 종류의 호출에 의해

: 여기

List<QualityData> qData= ie.getQualityData(); 
Collections.sort(qData,QualityData.COMPARATOR); 

, 나는 sequence_number에 따라 비교기를 구현하지만 난 그것이 sequence_number과 sub_sequence_nr을 기반으로하고 싶다. 누군가 나를 도울 수 있을까요?

답변

3

내가 여기 솔루션을 작동 정확히 게시하고 있지 않다 볼 수 있지만,이 줄 것이다 사용해야 필요한 아이디어와 솔버 수립 방법에 대한 완벽한 아이디어 그것 그것

 public static Comparator<QualityData> COMPARATOR=new Comparator<QualityData>(){ 
      public int compare(QualityData data1, QualityData data2){ 
       if((data1.getSequence_nr()-data2.getSequence_nr() == 0)){ 
        if(data1.getSubSequence_nr()-data2.getSubSequence_nr() == 0){ 
         if(data1.getFlag()){ 
          return 1;  
         }else{ 
          return -1; 
         } 
        }else{ 
         return data1.getSubSequence_nr()-data2.getSubSequence_nr(); 
        } 
       }else { 
        return data1.getSequence_nr()-data2.getSequence_nr(); 
       } 
      } 
     }; 
     } 
0

당신은 Collections.sort(collection, comparator);


를 사용 Comparator하면서 또한

+2

나는 OP가 값을 비교하기 위해 원하는 필드를 사용하는 방법에 대해 혼동스러워합니다. 그는 비교를 위해 3 개의 필드를 고려하려고합니다. – xyz