黑马程序员技术交流社区
标题:
Collections集合工具类max问题
[打印本页]
作者:
Massive
时间:
2013-11-19 18:45
标题:
Collections集合工具类max问题
本帖最后由 Massive 于 2013-11-19 18:54 编辑
private static void demo3() {
List<String> list = new ArrayList<>();
list.add("12");
list.add("23");
list.add("3");
list.add("9");
list.add("5");
System.out.println(list); //怎么存怎么取
Collections.sort(list,Collections.reverseOrder());//正着存进去 然后反转过来
System.out.println(list);
//Collections.max(list);
String str = Collections.max(list); //取自然排序的
System.out.println(str);
复制代码
[12, 23, 3, 9, 5]
[9, 5, 3, 23, 12] //这是eclipse的结果,集合反转好像也不对呀
9
复制代码
我的问题:集合反转后调用max方法得到的结果是9 ,这里就不明白了,求解释一下.是不是一般不这么用啊.
作者:
何丛
时间:
2013-11-19 20:57
楼主,你的list对象中存入的是字符串,String类实现了Comparable<String>接口,覆写了compareTo方法。String类中的compareTo方法是这样的:
1.当一个字符串是另一个字符串从首字母开始截取的子串时,调用compareTo方法返回的是两个字符串的长度之差;
2.两个字符串完全相同时,返回0
3.有一个字符串为空串时,返回另一个字符串的的长度
4.两个字符串不同又不是第一种情况时,就从第一个字母开始依次比较两个字符串中的字母,返回第一个不相同的字母的ASCII码值之差,请注意有可能是负数
如果对上面的list进行排序,得到的结果应该是 12,23,3,5,9,所以反转后的结果是9, 5, 3, 23, 12
而取得的最大值应该是9
作者:
Massive
时间:
2013-11-19 22:15
何丛 发表于 2013-11-19 20:57
楼主,你的list对象中存入的是字符串,String类实现了Comparable接口,覆写了compareTo方法。String类中的co ...
额,对了,我看明白他是怎么排序的了,原来他里面写的是字母,从小到大排列我看着不明显就换成了数字.忽略了这一点,谢谢,明白了.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2