set 特点:无序性、不可重复性
无序性:不是随机性
而是不是按照顺序存放
hashSet:线程不安全,可以存放null
对于频繁遍历:LinkedHashSet效率高于hashSet
hashCode值相当于set中的索引。
比较两个元素是否相等,先比较其hashCode值是否相同
如果不同,则存储。
如果相同,再比较equals()方法。
这样做的好处是:可以提高比较效率
HashSet底层的存储方式:数组+链表形式存储。
要求:向set中添加的数据,其所在的类一定要重写hashCode()和equals()方法。
重写的hashCode()和equals()保持一致。
即 对象中用作equals()方法比较的Field都应该用来计算hashCode值。