如题

解决方案 »

  1.   

    重写equals() 和 hashcode() 方法
      

  2.   

    放入的对象重写equals() 和 hashcode() 方法
    set的特性是无序和唯一!
      

  3.   

    看这个吧

    boolean add(E e)如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则向该 set 中添加指定的元素 e。如果此 set 已经包含该元素,则该调用不改变此 set 并返回 false。结合构造方法上的限制,这就可以确保 set 永远不包含重复的元素。 
    上述规定并未暗示 set 必须接受所有元素;set 可以拒绝添加任意特定的元素,包括 null,并抛出异常,这与 Collection.add 规范中所描述的一样。每个 set 实现应该明确地记录对其可能包含元素的所有限制。 
    指定者:
    接口 Collection<E> 中的 add
    参数:
    e - 要添加到 set 中的元素 
    返回:
    如果 set 尚未包含指定的元素,则返回 true 
    说的很清楚了.  不用你去实现, Set接口的实现类已经帮你封装好了..  在add的时候他会判断该集合里面是否已有此对象。如果有则不会改变集合,return false; 否则添加,,return true;  想了解实现过程去搜下JDK源码吧
      

  4.   

    set的实现类都有重写hashCode() 和 equals()