2013-07-22 3 views
0

Я новичок в java и помогаю в реализации Comparator. У меня есть Arraylist типа QualityData со следующими значениями.Реализация COMPARATOR в java

**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 

Желаемый результат на выходе: на основании 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

Я не размещение точно работает решение здесь, но это даст полная идея того, что вам нужно, и как solv e it

 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

Вы должны использовать что Comparator при использовании Collections.sort(collection, comparator);


Также см

+2

Я думаю, что ОП смущается о том, как использовать желаемое поле для сравнения значений. Он хочет рассмотреть 3 поля для сравнения. – xyz