黑马程序员技术交流社区

标题: HashSet [打印本页]

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






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2