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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧德林 中级黑马   /  2012-4-16 11:23  /  1698 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是不是 Collection集合下面的List ,Set,Map方法都可以用 Comparator接口和CompareTo方法去实现比较?
实现方式就是通过下面这样的代码吗?
下面一段代码 定义了一个比较器 ,返回值-1,1 是不是只要是负数或者正数就可以了? 如果相等呢?
class StrComparator implements Comparator<String>
{
        public int compare(String s1,String s2)
        {
                int num =s1.compareTo(s2);
                if(num>0)
                        return -1;
                if(num<0)
                        return 1;
                return num;
        }
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

6 个回复

倒序浏览
compareTo这个方法 返回值 是int的 不是boolean的  如果返回值是0就表示 相等
如果是不完全包含 返回值是负数  完全包含 返回值是正整数
class StrComparator implements Comparator<String>
{
        public int compare(String s1,String s2)
        {
                int num =s1.compareTo(s2);
                return num;
        }
}

上面那样就行,然后根据返回值是正负或者是0判断

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
这段代码在num==0时,不执行if操作。直接执行下面语句 return num;也就是返回0(因为此时num就是0)。
回复 使用道具 举报
比较器只适用于二叉树数据结构的集合类型,例如TreeSet和TreeMap,所以比较器并不是适用于所有集合的
如果要比较的两个数相等,比较器会返回0

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
比较器只适用于二叉树数据结构的集合类型,例如TreeSet和TreeMap,所以比较器并不是适用于所有集合的
如果要比较的两个数相等,比较器会返回0
回复 使用道具 举报
class StrComparator implements Comparator<String>
{
        public int compare(String s1,String s2)
        {
                int num =s1.compareTo(s2);
                if(num>0)
                        return -1;
                if(num<0)
                        return 1;
                return num;
        }
}

如果是相等的返回0,因为初始化是0啊。int在没有给值的情况下,系统会自动赋值0
回复 使用道具 举报
陈超 黑马帝 2012-4-16 16:11:06
7#
本帖最后由 陈超 于 2012-4-16 16:12 编辑

Collection集合下面的List 、Set接口,Map接口都可以用 Comparator接口和CompareTo方法去实现比较
Set接口和Map接口不用说了。
List接口本身并不具备比较性,我们可以直接实现Comparable接口,然后通过Collections集合工具类对集合进行排序。
                           同样可以定义一个类(比较器)实现Comparator接口,然后通过Collections对集合进行排序
通常当比较相等时,我们就比较次要条件

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马