0

我是 java 新手,在实现 Comparator 方面提供了一些帮助。我有一个具有以下值的 QualityData 类型的 Arraylist。

**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。有人可以帮我吗?

4

2 回答 2

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();
                }
            }
        };
        }
于 2013-07-22T06:57:54.703 回答
0

您需要在使用Comparator时使用它Collections.sort(collection, comparator);


另见

于 2013-07-22T06:54:40.827 回答