62,620
社区成员
发帖
与我相关
我的任务
分享
import java.util.Comparator;
public class NumberComparator<T extends String> implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String str1 = (String) o1, str2 = (String) o2;
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
int len1 = arr1.length, len2 = arr2.length;
int len = len1 < len2 ? len1 : len2;
int diff = 0;
boolean allIs=false;
for (int i = 0; i < len; i++) {
boolean is1 = isDigit(arr1[i]);
boolean is2 = isDigit(arr2[i]);
if (diff == 0) {
diff = arr1[i] - arr2[i];
}
if (!is1 && !is2) {
if (diff != 0) {
return diff;
}
allIs=false;
} else if (is1 && is2) {
allIs=true;
} else if (is1) {
if (allIs) {
return 1;
}
return diff;
} else if (is2) {
if (allIs) {
return -1;
}
return diff;
}
}
if (allIs) {
if (len1==len2) {
return diff;
}
return len1 - len2;
}
return diff;
}
private boolean isDigit(char c) {
return c>='0'&&c<='9';
}
}
然后
List<String> list=Arrays.asList(pics);
list.sort(new NumberComparator<String>());
for (String f : list) {
System.out.println(f);
}