HashSet
结论:HashSet保证元素的唯一性,依赖于元素所属类的hashCode() 和 equals() 方法。
分析:
元素添加到HashSet集合,先走hashCode(),
如果发现哈希值不一样,元素不重复,直接添加到集合了。
如果发现哈希值一样,再去走equals方法,比较具体的属性值。
如果equals返回了true,元素重复不添加。
如果equals放回false,元素不重复,添加到集合。
注意事项:
1)、工具生成hashCode()方法的理解:尽量让具有不同属性值的对象,返回不同的哈希值,以减少equals方法的调用,提高效率。
如果自己重写:
把所有成员变量的哈希值相加返回即可,引用数据调hashCode方法,基本数据用值。
2)、工具生成equals()方法,有提高程序效率和增加程序健壮性的判断。
如果自己重写 -- 三步:
为了提高效率 -- 判断传递进来的对象与调用方法的对象是否是同一个(地址值一样)
为了程序的健壮性 -- 判断传递进来的对象与调用方法的对象是否是同一个类的实例。
向下转型,比较具体的属性值。
|
|