Set接口:
特点1: 无序(存储的元素与添加顺序无关)
特点2:不可重复(使用元素的equals方法,来判定是否重复)
特点3:能存储null元素但是只能存储一次
Hash算法机制:
Set再添加或者查看元素时,当集合中的元素过多时,就会进行多次的比较,效率就会变低。
在设计元素类型时,提供hash算法,用于返回对象的一个int值
再内存中开辟很多小的区域,用于存储一定范围返回值的对象
当我们想添加或查看元素时,先计算此元素的返回值,然后去相应的区域中查找遍历,如果在这个区域没有找到对象
说明集合中可以添加这个对象,如果有,查看两个对象的equals的返回值
如果为true,不能添加
如果为false,可以添加,添加至对应的链表结构中(尽可能避开)
重写hashCode方法:
重写规则: 尽可能的让所有的成员变量都参与运算,尽可能的避免出现hash值碰撞
注意:
重写的必要性:
(1)如果重写了equals()方法,有必要重写hashCode()
(2)如果equals()方法返回true,hashCode返回值有必要相同
(3)如果equals()方法返回false,hashCode返回值不一定相同,如果返回值不同可以提高检索的效率
Set派生出来的子类
HashSet:通过实现hash算法的一种数据结构 无序 不重复
LinkedHashSet:通过实现hash算法的一种结构,但是通过链表来维持顺序,顺序与添加顺序一致
TreeSet: 使用了二叉树的一种数据结构,顺序与自然排序有关系
支持定制排序
Set接口
最新推荐文章于 2024-01-03 18:39:53 发布