黑马程序员技术交流社区
标题:
Collections问题
[打印本页]
作者:
李小锋
时间:
2012-12-15 14:17
标题:
Collections问题
本帖最后由 李小锋 于 2012-12-15 19:01 编辑
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
String max = Collections.max(list);
复制代码
这里返回的max是zz,我不明白,集合中是怎么比较的,具体比较的什么,为什么会是zz呢?
作者:
焦健
时间:
2012-12-15 14:44
collections。max();取出的是集合中按自然顺序排序最大的元素。
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) > 0)
candidate = next;
}
return candidate;
}
这是代码,是通过迭代器进行遍历,用compareTo()方法对逐个元素进行比较的。
作者:
李亚飞
时间:
2012-12-15 14:58
比较的是字母,Z是在最后,所以返回ZZ
作者:
洪灿阳
时间:
2012-12-16 00:40
Max方法是主要通过compareto方法比较而得到最大值的。这种问题你可以到collecttion集合中去找这个方法的相应源代码。这样你就会理解它的思想了,很多问题都是这样,到它源代码就理解很快就能够知其所以然了。我个人的经验希望对你有帮助。
作者:
yuchen208
时间:
2012-12-16 19:41
归根结缔是逐个比较ASCII码,
其中z ASCII 值122最大用相同的比较下一位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2