A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李小锋 中级黑马   /  2012-12-15 14:17  /  1686 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李小锋 于 2012-12-15 19:01 编辑
  1. List<String> list = new ArrayList<String>();

  2.                 list.add("abcd");
  3.                 list.add("aaa");
  4.                 list.add("zz");
  5.                 list.add("kkkkk");
  6.                 list.add("qq");
  7.                 list.add("z");
  8. String max = Collections.max(list);
复制代码
这里返回的max是zz,我不明白,集合中是怎么比较的,具体比较的什么,为什么会是zz呢?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
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()方法对逐个元素进行比较的。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
比较的是字母,Z是在最后,所以返回ZZ
回复 使用道具 举报
洪灿阳 来自手机 中级黑马 2012-12-16 00:40:35
板凳
Max方法是主要通过compareto方法比较而得到最大值的。这种问题你可以到collecttion集合中去找这个方法的相应源代码。这样你就会理解它的思想了,很多问题都是这样,到它源代码就理解很快就能够知其所以然了。我个人的经验希望对你有帮助。来自: Android客户端
回复 使用道具 举报
你应该知道字母都会有个对应的数值,而z是里面最大的
回复 使用道具 举报
归根结缔是逐个比较ASCII码,
其中z ASCII 值122最大用相同的比较下一位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马