使用collections.sort()方法对字符串进行排序

uajslkp6  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(819)

根据文档:这个实现将指定的列表转储到一个数组中,对数组排序,并在列表上迭代,从数组中相应的位置重置每个元素
考虑到下面的程序,我无法理解排序是如何判断这个字母的 'A' 比字母小或大 'a' ? 因为这是一个字符串,所以字母不会假定为ascii值,所以排序是如何进行的?

  1. public class LetterASort {
  2. public static void main(String[] args) {
  3. ArrayList<String> strings = new ArrayList();
  4. strings.add("aAaA");
  5. strings.add("AaA");
  6. strings.add("aAa");
  7. strings.add("AAaa");
  8. Collections.sort(strings);
  9. for (String s : strings)
  10. {
  11. System.out.print(s + " "); //prints AAaa AaA aAa aAaA
  12. }
  13. }
  14. }

我还试着调试代码,这给我带来了一个新的疑问:数组的长度原来是4而不是3 collections.sort 包括在长度中

gywdnpxw

gywdnpxw1#

自然秩序 Collections.sort 是指 Comparable --哪个 String 实现,并且只定义一个方法, compareTo . 所以,答案就在 String.compareTo . 其文件规定:
按字典顺序比较两个字符串。比较基于字符串中每个字符的unicode值。
词典排序基本上就是词典排序。从本质上说,尽可能按字母顺序排列每个字母,但如果当其中一个单词的字母用完时,你仍处于并列状态,那么先排列较短的单词。
unicode是每个字符具有的数值。这里有一篇关于unicode的介绍性文章(虽然不短,但它很好地引导了您了解unicode的含义,以及它存在的原因)。

chy5wohz

chy5wohz2#

String 类实现可比较的接口。当排序发生时, compareTo(String) 方法被调用。有关更多信息,请查看 compareTo(String) 字符串类中的方法。

相关问题