Set是不允许有重复元素的,它是一个借口,一般常用到的实现类就两个,HashSet和TreeSet.
把对象向HashSet中添加的时候,set会调用对象的hashCode方法,得到hashCode后经过一系列的运算得到改对象在集合中的位置.
再次添加对象使,再调用对象hashCode方法,如果这两个对象的HashCode相同,再去调用第二个对象equals()方法,
如果equals方法返回为true,就认为这两个对象的内容是相同的,则把第二个对象丢掉.
向TreeSet里添加的元素必须实现Comparable接口,覆盖compareTo方法,
其实你可以查一下API,往里添加的Integer,String都实现了Comparable
向TreeSet中添加对象的时候,会调用对象的compareTo方法,如果compareTo方法返回为0,就把这个对象丢掉.
用这种形势来保证TreeSet中的数据部重复.
|