我是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。有人可以帮助我吗?
答案 0 :(得分: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();
}
}
};
}
答案 1 :(得分:0)