黑马程序员技术交流社区

标题: HashSet [打印本页]

作者: SHISY    时间: 2015-6-12 20:50
标题: HashSet
    线程不安全,存取速度快
(1)底层结构为哈希表结构,即区分元素时使用hash值。可以通过hashCode与equals方法的重写,保证元素唯一性。
(2)具体代码体现为:先判断哈希值是否相等,再判断equals方法是否返回true。true则为相同元素,存储元素失败,false则为不同元素,存储元素成功。
使用HashSet:
a.存储自定义对象时,判断的是对象的hash值,如果hash值不同,再判断equals方法比较的结果,如果hash值相同,并且equals比较结果为true则为同一个对象。
b.hash值不等:直接判断两元素不同,加入到集合中。
c.hash值相等:
equals方法返回结果为true,则两元素相同,不加入到集合中
equals方法返回结果为false,则两元素不相同,加入到集合中
d.如果想让某个类型的对象,根据内容判断是否是相同的对象,则需要将这个类型的hashCode方法与equals方法重写,按照自己的逻辑。
注意:
在add方法时,判断两元素是否相等,调用的方法是新加入对象的方法,将老对象依次作为参数传入这个方法中。






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