有人可以解释以下功能的输出:
public static void main(String args[]) {
String str1 = new String("20");
String str2 = new String("100");
List<String> list = new ArrayList<>();
list.add(str1);
list.add(str2);
Collections.sort(list); // list is [100,20] now
}
Run Code Online (Sandbox Code Playgroud)
我希望排序工作在输入的ASCII值,即49为1,50为2,依此类推.
有人可以确认吗?
因此,使用每个对象具有的方法Collections.sort()对Comparable对象列表进行排序.因为,文档将其描述为:compareTo()ComparableString
按字典顺序比较两个字符串.比较基于字符串中每个字符的Unicode值.此String对象表示的字符序列按字典顺序与参数字符串表示的字符序列进行比较.
然后继续描述使用以下方法计算的两个不同字符串的词典排序:
如果两个字符串不同,则它们在某个索引处具有不同的字符,这些字符串是两个字符串的有效索引,或者它们的长度不同,或者两者都有.如果它们在一个或多个索引位置具有不同的字符,则令k为最小的索引; 然后是位置k处的字符具有较小值的字符串,通过使用<运算符确定,按字典顺序排在另一个字符串之前.在这种情况下,compareTo返回两个字符串中位置k处两个字符值的差值 - 即值:
Run Code Online (Sandbox Code Playgroud)this.charAt(k)-anotherString.charAt(k)如果没有它们不同的索引位置,那么较短的字符串按字典顺序排在较长的字符串之前.在这种情况下,compareTo返回字符串长度的差异 - 即值:
Run Code Online (Sandbox Code Playgroud)this.length()-anotherString.length()