Hashset保证元素唯一性原因:
add方法的源码,底层依赖两个方法:hashcode()和equals()
hashcode() 相当于是一个逻辑地址 门牌号
equals()相当于是一个物理地址
首先比较哈希值
相同,则比较地址值或者走equals
不同,则直接添加到集合中
按照方法的步骤来说:
先看hashCode()值是否相同
相同:继续走equals()方法
返回true: 说明元素重复,就不添加
返回false:说明元素不重复,就添加到集合
不同:就直接把元素添加到集合
如果类没有重写这两个方法,默认使用的Object()。一般来说不同相同。
而String类重写了hashCode()和equals()方法,所以,它就可以把内容相同的字符串去掉。只留下一个