所以我必须在数组中取一个字符串,将字符串作为所有字符放入一个新数组中,按字母顺序对字符进行排序,然后我需要将新的按字母顺序排列的字符串放入一个新字符串中,然后将其打印出来。
我如何创建一个方法来按字母顺序排列字符数组,然后将数组转换为一个字符串?
答案 0 :(得分:3)
我想你正在寻找这样的东西:
char[] a = ...;
Arrays.sort(a);
String s = new String(a);
答案 1 :(得分:1)
public static void main(String [] args) {
String str = "hello";
char [] array = str.toCharArray();
Arrays.sort(array);
String sortedStr = new String(array);
System.out.println(sortedStr);
}
答案 2 :(得分:1)
char[] array = yourString.toCharArry();
Arrays.sort(array);
youNewString = new String(array);
答案 3 :(得分:1)
在Java 8中:
String s = ... ;
String sSorted = Stream.of(s.split(""))
.sorted()
.collect(Collectors.joining());
答案 4 :(得分:1)
如果您需要处理混合大小写字符串,例如edcbaABCDEF,那么你需要做一些不同的事情......
其他答案中的Arrays.sort()仅处理数字字符值,因此您将获得edcbaABCDEF => ABCDEFabcde
Arrays.sort(arr,comparator)只能用于包装类型,即Character,而不是char,所以你需要先将它包起来。
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)));