我有一个包含值1-10的Java String数组。然而,当我在它上面运行Arrays.sort()时,它变为1,10,2,3,4 ...... 9。有谁知道为什么10号出了故障?是因为它是一个字符串数组而不是一个int数组?任何帮助表示赞赏!
答案 0 :(得分:4)
是的,这是因为它是字符串数组。 String类型的默认排序 - 简单的Unicode排序类似于字母排序。这就是为什么你的结果如此。
如果你将type改为int,一切都应该没问题。
答案 1 :(得分:1)
Array.sort()
的排序算法由其内容natural ordering(可比较界面的内容&#39)实现设置。
你可以检查课程'通过转到Java文档并检查类'实现。例如,String的实现(在String.compareTo(String)
下)指定这是由lexicographical order完成的(通常称为字母顺序)。
要解决此问题,请将前导0添加到其他号码,或使用其他内容类型(例如int
)。