如果您需要处理大小写混合的字符串,例如edcbaABCDEF,那么你需要做一些不同的事情......
Arrays.sort() 在其他答案中只处理数字字符值,所以你会得到 edcbaABCDEF => ABCDEFabcde
Arrays.sort(arr,comparator) 只能用于包装类型,即字符,而不是字符,所以你需要先包装它。
Character [] wrapped = new Character[charArray.length];
int i = 0;
for (char c : charArray) {
wrapped[i++] = c;
}
然后排序
Arrays.sort(wrapped, new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
return Character.compare(Character.toLowerCase(o1),
Character.toLowerCase(o2));
}
});
转回字符串
i = 0;
for (char c : wrapped) {
charArray[i++] = c;
}
System.out.println(new String(charArray));
==> AaBbCcDdEeF
这可以使用 Apache commons lang ArrayUtils helper 来简化。
String test = "edcbaABCDEF";
Character[] charArray = ArrayUtils.toObject(test.toCharArray());
Arrays.sort(charArray, new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
return Character.compare(Character.toLowerCase(o1),
Character.toLowerCase(o2));
}
});
System.out.println(new String(ArrayUtils.toPrimitive(charArray)));