2013-07-22 89 views
0

我是java的新手,並幫助實現比較器。 我有一個類型爲QualityData的Arraylist具有以下值。在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 

所需的輸出順序: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

我不張貼正是在這裏工作的解決方案,但是這會給完整的想法,你需要什麼和如何solv e它

 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

我猜OP是如何使用所需的字段來比較值混淆。他想考慮3個領域進行比較。 – xyz