java如何按字母顺序对字符串进行排序
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19468122/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to sort a string alphabetically java
提问by adrisp
I want to sort a string in JAVA alphabetically, as follows Capital letter and lowercase letter followed AaBbCcDdEeFfGg. for example if I put AbaC return me AabC thanks!!
我想按字母顺序对JAVA中的字符串进行排序,如下大写字母和小写字母后跟AaBbCcDdEeFfGg。例如,如果我把 AbaC 返回给我 AabC 谢谢!!
采纳答案by Boann
You can do this using Arrays.sort
, if you put the characters into an array first. (It must be an array of Character
objects rather than char
primitives, in order to use a custom case-insensitive comparator.)
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();
回答by EyeOfTheHawks
Turn the String into a character array, then compare the int values of each character in your sort.
将 String 转换为字符数组,然后比较排序中每个字符的 int 值。
Methods needed:
String.toCharArray();
需要的方法:
String.toCharArray();
回答by Rahul Tripathi
You may try to look for Collections.sortand then try like this:-
您可以尝试查找Collections.sort然后像这样尝试:-
Collections.sort(caps, String.CASE_INSENSITIVE_ORDER);
Something like this:-
像这样的东西:-
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);
EDIT:-
编辑:-
For sorting alphabetically in a string try like this:-
要在字符串中按字母顺序排序,请尝试这样:-
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);