按字母顺序排列字符串中的字符,然后将按字母顺序排列的字符放入新字符串中?

Alphabetize characters in a string then put the alphabetized characters into a new String?

所以我必须在数组中取一个字符串,将字符串作为所有字符放入一个新数组,按字母顺序对字符进行排序,然后我需要将新的按​​字母顺序排列的字符放入一个新字符串中,然后打印它。

我如何制作一种按字母顺序排列字符数组然后将该数组转换为一个字符串的方法?

我猜你正在寻找这样的东西:

char[] a = ...;
Arrays.sort(a);
String s = new String(a);
 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);
    }
char[] array = yourString.toCharArry();
Arrays.sort(array);
youNewString = new String(array);

在Java 8:

String s = ... ;
String sSorted = Stream.of(s.split(""))
    .sorted()
    .collect(Collectors.joining());

如果您需要处理大小写混合的字符串,例如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 帮助程序进行简化。

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)));