当前位置:编程学习 > JAVA >>

Set问题求助..


上图,眼镜妹来慰问各位大牛!


问题如下:
(1)Set类的HashSet.我将自定类的对象放入HashSet集合里.也重写了自定类的equals方法.全返回true,但是都添加进去了..请问这是神马情况.
(2)Set类的ThreeSet.我用add()可以把一个自定义类的对象放进去..但是第二个就不行了.我可以百分百确定那是同一个自定义类,不同对象
(3)谢谢大牛 --------------------编程问答-------------------- (2)第二个问题是抛了ClassCastException异常,他们是同一个类的.第一个可以放进去..第二个就报错了 --------------------编程问答--------------------
引用 楼主 u010560475 的回复:

上图,眼镜妹来慰问各位大牛!


问题如下:
(1)Set类的HashSet.我将自定类的对象放入HashSet集合里.也重写了自定类的equals方法.全返回true,但是都添加进去了..请问这是神马情况.
(2)Set类的ThreeSet.我用add()可以把一个自定义类的对象放进去..但是第二个就不行了.我可以百分百确定那是同一个自定义类,不同对象
(3)谢谢大牛



1、第一个问题:楼主重写hashCode()方法了吗,如果判定两个对象是相等的,那么equals方法返回true
   且其hashCode()方法返回的值也应该相等。没有重写hashCode默认返回的是对象的物理地址,肯定和
   equals方法不一致。
   想要理解hashSet是如何实现的,具体细节,楼主看看源码便知!

2、贴出你的详细代码,只是类型转换的错误 --------------------编程问答-------------------- ThreeSet有排序功能,你的类有没有实现comparable? --------------------编程问答-------------------- 1 需要重写hashCode 方法 
 可用eclipse生成
2 贴出你的代码
  --------------------编程问答-------------------- 1、重写equals()和hashCode()方法
2、你的类要实现comparable接口,并实现public int compareTo(.. o)方法 --------------------编程问答-------------------- Set系都是参照equals+hashcode判断是不是相同对象的.

一般重写equals+hashcode就可以了.
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,