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

解决方案 »

  1.   

    (2)第二个问题是抛了ClassCastException异常,他们是同一个类的.第一个可以放进去..第二个就报错了
      

  2.   

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

  3.   

    ThreeSet有排序功能,你的类有没有实现comparable?
      

  4.   

    1 需要重写hashCode 方法 
     可用eclipse生成
    2 贴出你的代码
     
      

  5.   

    1、重写equals()和hashCode()方法
    2、你的类要实现comparable接口,并实现public int compareTo(.. o)方法
      

  6.   

    Set系都是参照equals+hashcode判断是不是相同对象的.一般重写equals+hashcode就可以了.