自定义数字字符串混合排序比较器
private List<HomeworkAnalysisResultsVO> compareQuestionNum(List<HomeworkAnalysisResultsVO> results ){
Collections.sort(results, new Comparator<HomeworkAnalysisResultsVO>() {
@Override
public int compare(HomeworkAnalysisResultsVO o1, HomeworkAnalysisResultsVO o2) {
String num2 = o2.getQuestionNum();
String num1 = o1.getQuestionNum();
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isO2 = pattern.matcher(num2);
Matcher isO1 = pattern.matcher(num1);
if(!isO2.matches() && !isO1.matches() ){
return num1.compareTo(num2);
}else if(!isO2.matches() || !isO1.matches()){
return num1.compareTo(num2);
}else{
return Integer.valueOf(num1)>Integer.valueOf(num2)?1:-1;
}
}
});
return results;
}