gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:04:21 25 4
gpt4 key购买 nike

根据 documentation :此实现将指定列表转储到数组中,对数组进行排序,然后迭代列表,从数组中的相应位置重置每个元素

鉴于下面的程序,我无法理解排序,因为jvm内部如何判断字母'A'比字母'a'小还是大?由于这是一个字符串,因此不会将字母假定为 ascii 值,那么排序是如何进行的?

public class LetterASort {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList();
strings.add("aAaA");
strings.add("AaA");
strings.add("aAa");
strings.add("AAaa");
Collections.sort(strings);
for (String s : strings)
{
System.out.print(s + " "); //prints AAaa AaA aAa aAaA
}
}
}

我还尝试调试代码,这给我带来了一个新的疑问:数组的长度结果是 4 而不是 3,因为 collections.sort 包含在长度中

最佳答案

Collections.sort 引用的“自然排序”是Comparable 指定的顺序。 -- String 实现的,并且只定义了一个方法,compareTo。所以,答案就在String.compareTo的定义中。 。其文档指出:

Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings.

词典排序基本上就是字典排序。本质上,请尽可能按字母顺序对每个字母进行排序,但是如果当任一单词用完字母时您仍然处于平局,那么较短的单词将排在前面。

Unicode 是每个字符所具有的数值。有一篇很棒的介绍性文章 here (它不短,但它很好地引导您了解 unicode 是什么,以及它存在的原因)。

关于java - 使用 collections.sort() 方法对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29911161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com