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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是小白 中级黑马   /  2013-3-26 21:43  /  2711 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

List集合中可以传进去不同的对象,HashSet也可以传进去不同的对象,但是对于TreeSet,请问如何传进去不同的对象?如果是自己写的类,实现Comparable接口,第一件事就是判断是否同一个类,然后抛异常——还是说,TreeSet就没打算让你传进去不同的值,使用TreeSet必须加泛型?

点评

如果你的问题已经得到解决后,请及时将主题贴类型改为 [已解决] ,如还有问题可继续追问。  发表于 2013-3-27 04:58

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

倒序浏览
为了让你的代码健壮性更好,
你先判断 obj (传那个参数)
用重写comareTo方法为例:
下面是步骤
if(obj==null){return; 或抛异常}
if(obj instanceof  XX){return; 或抛异常}
if(this.class==obj.classl){return; 或抛异常}
XX xx=(XX)obj;这一步是用来强转。

接下来才是你的判断对象属性是否相等的语句
…………
…………

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
存TreeSet集合里的元素,必须要满足两个条件中的其中一个
要么是,元素具备比较性,也就是实现了Comparable接口
要么是,先自定义一个比较器,当存元素的时候,调用定义好的比较器
不然的话,TreeSet怎么知道你存入的元素是不是同一个?

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
TreeSet集合是是不允许元素重复的,保证元素唯一性的方法有两种,一个是实现comparable接口并覆写里面的compareTo方法。
如果实现接口时加泛型的话,那么compareTo方法中的参数要和泛型是同一类型。
class A implements Comparable<String>
{
        public int compareTo(String o) {
                return 0;
        }
}
另一种是在TreeSet中传入比较器。比较器的定义方法是第一一个类实现Comparator 并覆写里面的compare方法。
class A implements Comparator<String>
{
        public int compare(String o1, String o2) {
                return 0;
        }
}

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
首先,没有任何一种集合或是代码要你必须加泛型,我们加泛型的目的是避免强转,让代码更便于阅读!!你不加泛型,这个集合你照样写得出来!
Set集合都要求元素是唯一的!!TreeSet集合是二叉树的数据结构!元素是有序的,不管你是对象还是其他什么,如何让元素有序?这就要求元素本身具备比较性,也就是继承Comparable类,覆写CompareTo方法。或是定义比较器,实现Comparetor接口让集合本身具备比较性!!如果你是相同的对象,是不能进入TreeSet集合的!不会丢异常,只是你发现根本没加进去!
回复 使用道具 举报
你这个问题问的不是很专业:
首先你List可以存不同的对象,这是必须可以的
java中所有的集合都可以存不同的对象,HashSet和TreeSet可以避免存入相同的对象,HashSet使用的方法是:被存入的对象必须重写hashcode方法,然后再根据equals()方法判断是否相同,如果相同,就覆盖, TreeSet是根据二叉树算法,实现了comparable接口,重写compareTo()方法可以避免存入相同的对象。

最后,我想跟你说,泛型这个概念:泛型是jdk1.5的新特性,如果一个集合加了泛型,那么这个集合里面只能存泛型中所指的类型
比如: List<String> list = new ArrayList<String>();
那么list中只能存字符串
最后补充一点:泛型是配合增强for循环 对集合进行迭代。  希望你能听明白我说什么!!

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

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