黑马程序员技术交流社区
标题: 个人整理的一些集合排序重点,希望能帮到需要的人 [打印本页]
作者: 聂_疯 时间: 2013-6-17 14:57
标题: 个人整理的一些集合排序重点,希望能帮到需要的人
SortedSet接口
------TreeSet实现类
保证迭代器按照元素递增顺序遍历的集合,可以按照元素的自然顺序进行排序,或者按照创建有序集合时提供的 Comparator进行排序。
什么是自然顺序?
基本数据类型(包装类) 数值由小到大,引用数据类型 哈希值由小到大
在JDK类库中,有一部分类实现了Comparable接口,如Integer、Double和String等。Comparable接口有一个compareTo(Object o) 方法,它返回整数类型。
对于表达式,如果返回值为0,表示x和y相等,如果大于0,则表示x大于y,如果返回值小于0,则表示x小于y。
TreeSet:
根据其元素的自然顺序进行排序,调用对象的compareTo()方法比较集合中的元素
1 插入该 set 的所有元素都必须实现 Comparable 接口
2 所有这些元素都必须是可互相比较的(类型相同):对于 set 中的任意两个元素 e1 和 e2,执行 e1.compareTo(e2) 都不得抛出 ClassCastException。
如果用户试图将违反此约束的元素添加到 set(例如,用户试图将字符串元素添加到其元素为整数的 set 中),则 add 调用将抛出 ClassCastException。
如:
//new String("10").compareTo(10);(在比较之前会进行类型转换)
//Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
Comparable接口
public int compareTo(Object?o);
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
如果是自定义类并且没有实现此接口,无法通过该接口进行对象的比较。
所以要使自己的类能够进行比较,那么实现该接口,并重写compareTo()方法,自定义定义对象比较规则
Comparator接口
public int compare(Object?o1, Object?o2) ;
比较用来排序的两个参数。随第一个参数小于、等于或大于第二个参数而分别返回负整数、零或正整数
boolean equals(Object obj) 该方法可以不实现。
适用于其他人写的类和自定义的类。
比较Comparable接口和Comparator接口
Comparable,比较对象的本身(要将该对象放到排序的集合类的时候)
Comparator,其他人写的类和自定义的类,为其他类的比较制定比较规则(比较器)
作者: 曹睿翔 时间: 2013-6-17 18:22
虽然整理比较乱,不过是好东西
作者: 聂_疯 时间: 2013-6-17 18:27
呵呵,谢谢曹版主啊。。昨天面对不知如何搞技术分,今天疯狂的守了一天的论坛,技术分算是上10了,不容易啊 。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |