For example:[F,a,f,h,A,g,K], I will delete all the capital letters, and sort all the lowercases. Then if there is a capital letter 'A' in the original array, I know it must be placed at the front of 'a'. So does the capital letter 'F'.
丢进集合里面。 写一个比较器去排序。 比较器 public static class CaseInsensitiveComparator implements Comparator { public int compare(Object element1, Object element2) { String lower1 = element1.toString().toLowerCase(); String lower2 = element2.toString().toLowerCase(); if(lower1.equals(lower2)){ //如果是同个字母大小写 如 A a return element1.compareTo(element2); //直接比较原字母 }else{ return lower1.compareTo(lower2); //否则比较转小写的字母 } } }
A的ASCII为65 a的ASCII为97 那把a - 31.5 就为65.5。然后按double型排序 然后转回原来的字母,就OK了。
比较器
public static class CaseInsensitiveComparator
implements Comparator {
public int compare(Object element1,
Object element2) {
String lower1 =
element1.toString().toLowerCase();
String lower2 =
element2.toString().toLowerCase();
if(lower1.equals(lower2)){ //如果是同个字母大小写 如 A a
return element1.compareTo(element2); //直接比较原字母
}else{
return lower1.compareTo(lower2); //否则比较转小写的字母
}
}
}
Character[] cs = { 'F', 'a', 'f', 'h', 'A', 'g', 'K' };
Comparator<Character> c = new Comparator<Character>() {
public int compare(Character o1, Character o2) {
int dif = 'a' - 'A';
if (o1 - o2 == dif || o2 - o1 == dif) {
return o1 - o2;
} else {
return (o1 >= 97 ? (o1 - dif) : o1) - (o2 >= 97 ? (o2 - dif) : o2);
}
} };
Arrays.sort(cs, c); System.out.println(cs);
http://topic.csdn.net/u/20080921/10/6987335e-9cb3-4557-9f9e-c294a1b86dd3.htmlN人回复,我也写了个:
public class Test01 { public static void main(String[] args) {
char ch[] = {'j','K','a','A','f','F'};
System.out.println("before sorting, array=" + Arrays.toString(ch));
for (int i = 0; i < ch.length; i++) {
for (int j = 0; j < ch.length-1; j++) {
if (lt(ch[i], ch[j])) {
char t = ch[i];
ch[i]=ch[j];
ch[j]=t;
}
}
}
System.out.println("after sorting, array=" + Arrays.toString(ch));
}
private static boolean lt(char c, char d) {
if (c == d - 'A' + 'a') {
return false;
}
if (c - 'A' + 'a' == d) {
return true;
}
return Character.toLowerCase(c) - Character.toLowerCase(d) < 0;
}
}