Arrays.sort只是因为某种原因没有排序

时间:2014-04-28 06:25:02

标签: java arrays sorting

是的,我遇到了这段代码的问题,而且我的生活无法弄清楚发生了什么:

String test = "Test";
char[] charArray = test.toCharArray();
Arrays.sort(charArray);
for(char a:charArray)
{
    System.out.println(a);
}

无论出于何种原因,这根本就不是对我的数组进行排序而且我已经没有理由为什么它不会做我期望它做的事情?任何人都知道为什么不这样做?

4 个答案:

答案 0 :(得分:2)

是的,它已排序,因为T 小于而不是t。如果您想要排序,无论它们是大写还是小写,请尝试

char[] charArray = test.toLowerCase().toCharArray();
Arrays.sort(charArray);

答案 1 :(得分:2)

在Java中,如果你这样做:

if('T' < 't') {
   System.out.println("Yes");
} else {
   destroyTheWorld(); //We are safe
}

它将打印&#34;是&#34;。

'T'&#34;更小&#34;比't'更多,请参阅ASCII表了解详情。

可能的解决方案是编写自己的比较器。

答案 2 :(得分:1)

它正在对数组进行排序。你只是没有意识到这一点。 “T”出现在“e”之前然后出现's'然后出现't'。检查字符及其值。您的数组在创建时已经排序。

答案 3 :(得分:0)

您选择的输入已经排序。

String test = "Test123"; // <-- this will output 1,2,3,T,e,s,t with your current code.