黑马程序员技术交流社区
标题:
关于比较器的问题
[打印本页]
作者:
欧德林
时间:
2012-4-16 11:23
标题:
关于比较器的问题
是不是 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;
}
}
作者:
liuyang
时间:
2012-4-16 11:52
compareTo这个方法 返回值 是int的 不是boolean的 如果返回值是0就表示 相等
如果是不完全包含 返回值是负数 完全包含 返回值是正整数
class StrComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
int num =s1.compareTo(s2);
return num;
}
}
上面那样就行,然后根据返回值是正负或者是0判断
作者:
王永旺
时间:
2012-4-16 12:02
这段代码在num==0时,不执行if操作。直接执行下面语句 return num;也就是返回0(因为此时num就是0)。
作者:
秦超
时间:
2012-4-16 12:32
比较器只适用于二叉树数据结构的集合类型,例如TreeSet和TreeMap,所以比较器并不是适用于所有集合的
如果要比较的两个数相等,比较器会返回0
作者:
秦超
时间:
2012-4-16 12:32
比较器只适用于二叉树数据结构的集合类型,例如TreeSet和TreeMap,所以比较器并不是适用于所有集合的
如果要比较的两个数相等,比较器会返回0
作者:
欧阳才志
时间:
2012-4-16 13:11
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
本帖最后由 陈超 于 2012-4-16 16:12 编辑
Collection集合下面的List 、Set接口,Map接口都可以用 Comparator接口和CompareTo方法去实现比较
Set接口和Map接口不用说了。
List接口本身并不具备比较性,我们可以直接实现Comparable接口,然后通过Collections集合工具类对集合进行排序。
同样可以定义一个类(比较器)实现Comparator接口,然后通过Collections对集合进行排序
通常当比较相等时,我们就比较次要条件
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2