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

Java 按字母顺序排列字符串中的字符,然后将按字母顺序排列的字符放入新字符串中?,java,arrays,string,sorting,methods,Java,Arrays,String,Sorting,Methods,所以我必须在数组中取一个字符串,将字符串作为所有字符放入一个新数组,按字母顺序对字符进行排序,然后我需要将新的字母顺序字符放入一个新字符串,然后打印它 我该如何制作一种方法来按字母顺序排列字符数组,然后将数组转换为一个字符串?我想您正在寻找类似这样的方法: char[] a = ...; Arrays.sort(a); String s = new String(a); 我猜你在找这样的东西: char[] a = ...; Arrays.sort(a); String s = new Str

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


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

我想您正在寻找类似这样的方法:

char[] a = ...;
Arrays.sort(a);
String s = new String(a);

我猜你在找这样的东西:

char[] a = ...;
Arrays.sort(a);
String s = new String(a);
在Java 8中:

String s = ... ;
String sSorted = Stream.of(s.split(""))
    .sorted()
    .collect(Collectors.joining());
在Java 8中:

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

如果您需要处理混合大小写字符串,例如edcbaABCDEF,那么您需要做一些不同的事情

其他答案中的Arrays.sort()只处理数字字符值,因此您将得到edcbaABCDEF=>ABCDEFabcde

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));
    }
});
这可以使用ApacheCommonsLangHelper来简化

String test=“edcbaABCDEF”;
Character[]charArray=ArrayUtils.toObject(test.toCharArray());
sort(charArray,新的Comparator(){
@凌驾
公共整数比较(字符o1,字符o2){
返回Character.compare(Character.toLowerCase(o1),
字符。toLowerCase(o2));
}
});
System.out.println(新字符串(ArrayUtils.toPrimitive(charArray));

如果您需要处理混合大小写字符串,例如edcbaABCDEF,那么您需要做一些不同的事情

其他答案中的Arrays.sort()只处理数字字符值,因此您将得到edcbaABCDEF=>ABCDEFabcde

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));
    }
});
这可以使用ApacheCommonsLangHelper来简化

String test=“edcbaABCDEF”;
Character[]charArray=ArrayUtils.toObject(test.toCharArray());
sort(charArray,新的Comparator(){
@凌驾
公共整数比较(字符o1,字符o2){
返回Character.compare(Character.toLowerCase(o1),
字符。toLowerCase(o2));
}
});
System.out.println(新字符串(ArrayUtils.toPrimitive(charArray));

您能发布输入和预期结果的示例吗?您能给我们展示一些您迄今为止尝试过的代码吗?不幸的是,我现在不在我的桌面上,当我回来的时候,我会用我所拥有的进行编辑。你需要处理混合大小写字符串吗?代理项对呢?你能发布输入和预期结果的示例吗?你能给我们展示一些你迄今为止尝试过的代码吗?不幸的是,我现在不在我的桌面上,当我回来时,我会用我所拥有的进行编辑。你需要处理大小写混合的字符串吗?代理项对呢?你从来没有解释过将字符串转换为字符数组吗?这不是问题的一部分。“我如何制作一个方法来对字符数组进行字母排序,然后将数组转换为一个字符串?”您从未解释过将字符串转换为字符数组?这不是问题的一部分。“我该如何创建一个方法来按字母顺序排列字符数组,然后将数组转换为一个字符串?”我没有否决,但我可能应该更清楚一点。我知道如何将字符串转换为字符数组。我只是想知道如何对字符数组进行排序,然后将字母数组转换成一个新字符串。我没有向下投票,但我可能应该更清楚一点。我知道如何将字符串转换为字符数组。我只是想了解如何对字符数组进行排序,然后将字母数组转换为新字符串。