HashSet

来源:互联网 发布:数据挖掘商业模型 编辑:程序博客网 时间:2024/06/18 14:54

HashSet底层实用HashMap实现的。当使用add方法将对象添加到Set中时,实际上是将该对象作为底层所维护的Map对象key,而value则都是同一个Object对象(该对象我们用不上)。

HashMap底层维护一个数组,我们向HashMap所放置的对象实际上是存储在这个数组当中的。

当我们向HashMapput一对键值时,它会根据keyhashCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。如果该位置没有对象存在,就将此对象直接放进数组当中;如果该位置已经有对象存在了,则顺着此存在的对象的链开始寻找(Entry类有一个next成员变量,指向了此对象的下一个对象),如果此链上有对象的话,再使用equals方法进行比较,如果对此链上的某个对象的equals比较为false,则将该对象存放到数组中,然后将数组中以前存放的那个对象链接到此对象的后面。

0 0