我想在JAVA中按字母顺序对字符串进行排序,如下所示: 大写字母和小写字母相互跟随 AaBbCcDdEeFfGg。 例如,如果我输入AbaC,则返回AabC。 谢谢!
我想在JAVA中按字母顺序对字符串进行排序,如下所示: 大写字母和小写字母相互跟随 AaBbCcDdEeFfGg。 例如,如果我输入AbaC,则返回AabC。 谢谢!
如果你先将这些字符放入一个数组中,Arrays.sort
可以帮助你完成排序。(为了使用自定义的不区分大小写比较器,它必须是Character
对象数组而不是char
原始类型数组。)
// put the characters into an array
Character[] chars = new Character[str.length()];
for (int i = 0; i < chars.length; i++)
chars[i] = str.charAt(i);
// sort the array
Arrays.sort(chars, new Comparator<Character>() {
public int compare(Character c1, Character c2) {
int cmp = Character.compare(
Character.toLowerCase(c1.charValue()),
Character.toLowerCase(c2.charValue())
);
if (cmp != 0) return cmp;
return Character.compare(c1.charValue(), c2.charValue());
}
});
// rebuild the string
StringBuilder sb = new StringBuilder(chars.length);
for (char c : chars) sb.append(c);
str = sb.toString();
您可以尝试查找Collections.sort, 然后按照以下方式尝试:
Collections.sort(caps, String.CASE_INSENSITIVE_ORDER);
类似于这样:
private static Comparator<String> ALPHA_ORDER = new Comparator<String>() {
public int compare(String str1, String str2) {
int x = String.CASE_INSENSITIVE_ORDER.compare(str1, str2);
if (x== 0) {
x= str1.compareTo(str2);
}
return x;
}
};
Collections.sort(list, ALPHA_ORDER);
编辑:
若要按字母顺序对字符串进行排序,请尝试以下方法:
Collator col = Collator.getInstance(new Locale("en", "EN"));
String s = "AbaC";
String[] s1= s.split("");
Arrays.sort(s1, col);
String sorted = "";
for (int i = 0; i < s1.length; i++)
{
sorted += s1[i];
}
System.out.println(sorted);
String.toCharArray();