List<String> list = new ArrayList<String>();
list.add("a-bc");
list.add("b-c");
list.add("1-11");
list.add("1-2");
list.add("1-1");
list.add("11-2");
list.add("a-b");
list.add("1");
sortIntMethod(list);//排序
System.out.println(list.toString());
private static void sortIntMethod(List list){
Collections.sort(list, new Comparator(){
@Override
public int compare(Object obj1, Object obj2) {
Pattern p = Pattern.compile("[a-zA-z]");
if (obj1 == null || obj2 == null) {
return -1;
}
if(p.matcher(obj1.toString()).find()||p.matcher(obj2.toString()).find()){
return new String(obj1.toString()).compareTo(new String(obj2.toString()));
}else{
if(!p.matcher(obj1.toString()).find()&&!p.matcher(obj2.toString()).find()){
if(!obj1.toString().contains("-")){
obj1 = obj1+"-0";
}
if(!obj2.toString().contains("-")){
obj2 = obj2+"-0";
}
String[] temp1 = obj1.toString().split("-");
String[] temp2 = obj2.toString().split("-");
String[] str1;
String[] str2;
if (temp1.length > temp2.length) {
str2 = temp1;
str1 = temp2;
} else {
str1 = temp2;
str2 = temp1;
}
for (int i = 0; i < str2.length; i++) {
if (i <= (str1.length - 1)) {
if (Long.valueOf(str2[i])>Long.valueOf(str1[i])) {
return 1;
} else if (Long.valueOf(str2[i])<Long.valueOf(str1[i])) {
return -1;
} else {
continue;
}
} else {
return 1;
}
}
}
}
return 0;
}
});
}
最后输出结果:
[1, 1-1, 1-2, 1-11, 11-2, a-b, a-bc, b-c]