Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用collections.sort()方法对字符串进行排序_Java_Arrays_Collections_Scjp - Fatal编程技术网

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

Java 使用collections.sort()方法对字符串进行排序,java,arrays,collections,scjp,Java,Arrays,Collections,Scjp,根据:此实现将指定的列表转储到数组中,对数组进行排序,并在列表上迭代,从数组中的相应位置重置每个元素 鉴于下面的程序,我无法理解排序,因为jvm如何判断字母'A'小于或大于字母'A'?因为这是一个字符串,所以字母不会被假定为ascii值,那么排序是如何进行的呢 public class LetterASort { public static void main(String[] args) { ArrayList<String> strings = new A

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

鉴于下面的程序,我无法理解排序,因为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 
        }
    }
}
public class LetterASort{
公共静态void main(字符串[]args){
ArrayList字符串=新的ArrayList();
字符串。添加(“aAaA”);
字符串。添加(“AaA”);
字符串。添加(“aAa”);
字符串。添加(“AAaa”);
Collections.sort(字符串);
用于(字符串s:字符串)
{ 
System.out.print(s+“”);//打印AAaa AAaa
}
}
}
我还试着调试代码,这给我带来了一个新的疑问:数组的长度原来是4而不是3,因为
集合。排序
包含在长度中集合的“自然顺序”。排序
指的是--
字符串
实现的,它只定义了一种方法,
compareTo
。因此,答案就在对的定义中。其文件规定:

按字典顺序比较两个字符串。比较基于字符串中每个字符的Unicode值

词典排序基本上是指词典排序。从本质上说,尽可能地按字母顺序排列每个字母,但如果当其中一个单词的字母用完时,您仍然处于并列状态,则先排列较短的单词


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

String
类实现了该接口。进行排序时,将调用
compareTo(String)
方法。有关详细信息,请查看String类中方法的实现。

为什么预期长度为3?我看到ArrayList中添加了4个元素,但数组索引的长度从0开始,对吗?是的,但这很好:长度为4意味着最后一个索引是3。索引是{0,1,2,3}。那里有四个数字(即长度),其中最大的是3(即最后一个索引)。@kittu索引从零开始。虽然长度不是最大索引,但它是集合中的元素数。不要混淆长度和索引。长度是列表中元素的数量,而索引是用来指出对象在集合中的位置的东西。如果可能的话,你能给我提供一个链接吗。谢谢链接到什么?单词“Comparable”和“String.compareTo”都链接到各自的文档。我很乐意链接到您需要的任何其他内容,只要让我知道。@kittu-检查源代码并按照链接进行操作:)非常感谢您的努力,感谢@TheLostMind跟进您的答案;)@最后,我想补充一下:如果在scjp中有人问我这样的问题,那么我必须知道unicode值吗?这个问题来自我正在准备的scjp书