对于相同的输入,Arrays.sort()对于int []和String的工作原理有何不同?

时间:2018-05-12 20:22:13

标签: java arrays sorting

我正在努力从leetcode解决这个问题 https://leetcode.com/problems/largest-number/description/

我正在寻找解决方案,并注意到当输入为数字时输入为字符串(静止数字)时,排序的行为会有所不同。

输入:

[3,30,34,5,9]

代码:

String[] numstoString = new String[nums.length];
for(int i=0;i<nums.length;i++){
    numstoString[i] = Integer.toString(nums[i]);
}

Arrays.sort(numstoString);
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));        
System.out.println(Arrays.toString(numstoString));

输出:

[3, 5, 9, 30, 34]

[3, 30, 34, 5, 9]

有人可以告诉我,在排序方面,“数字”与数字有什么不同。

2 个答案:

答案 0 :(得分:2)

数字排序与字符串排序不同,当您对数字进行排序时,实际上是在比较其中的值3 < 5 < 9 < 30 < 34,但是当将它们转换为字符串时,字符串分区通过将它们转换为ASCII值逐字符发生, 34 < 5因为第一个数字3 < 5

答案 1 :(得分:0)

如果您的int[]数字值用于对列表进行排序,那么5&lt; 9&lt; 30 ...

如果String[],则使用字符串中每个字符的数值进行比较。所以&#34; 30&#34;来自&#34; 5&#34;因为&#34; 3&#34;的ASCII值低于&#34; 5&#34;。