有人可以解释一下以下函数的输出:
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
}
我希望排序能够按输入的 ASCII 值进行,即 1 为 49,2 为 50,依此类推。
有人可以确认一下吗?
So Collections.sort() http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort%28java.util.List%29对列表进行排序Comparable http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html对象,使用compareTo()
方法,每个Comparable
对象有。为了String http://docs.oracle.com/javase/7/docs/api/java/lang/String.html, 文档将其描述为 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo%28java.lang.String%29:
按字典顺序比较两个字符串。比较基于 Unicode 值
字符串中的每个字符。这个String对象表示的字符序列是
按字典顺序与参数字符串表示的字符序列进行比较。
然后,它继续描述使用以下方法计算的两个不同字符串的字典顺序:
如果两个字符串不同,则它们在某个索引处具有不同的字符
这是两个字符串的有效索引,或者它们的长度不同,或者两者都有。如果他们
在一个或多个索引位置有不同的字符,令 k 为此类中最小的
指数;然后确定 k 位置处的字符具有较小值的字符串
通过使用
this.charAt(k)-anotherString.charAt(k)
如果没有它们不同的索引位置,则较短的字符串
按字典顺序位于较长的字符串之前。在这种情况下,compareTo 返回
字符串长度的差异——即值:
this.length()-anotherString.length()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)