0
点赞
收藏
分享

微信扫一扫

集合——HashSet数据结构的底层结构

Mhhao 2022-04-05 阅读 52
java集合

我们都知道hashset是set接口的实现类,set的特点是无序、唯一,使用起来也很简单无脑,但hashset底层是怎么实现的?如何保证它的唯一性呢?那我们就一起来探讨一下hashset数据结构的底层结构。

进入hashset类的源码发现,它的构造方法里维护了一个hashmap。

public HashSet() 
{
     map = new HashMap<>();
}

再看一下它的add方法,发现hashset的add方法,就是调用hashmap的put方法,插入的对象为key,PRESENT为value(PRESENT就是一个空的Object对象)

public boolean add(E e) {
     return map.put(e, PRESENT)==null;
}

那为啥hashset的元素唯一?

因为当hashset在调用add方法添加元素时,会调用hashmap的put方法,以插入的对象为key,在hashmap的put方法中,会调用hashcode方法计算出哈希值,然后再通过按位与运算(length-1)&hashcode,计算出数组下标,然后通过equals方法来判断元素是否存在,如果存在,则替换,如果不存在,就插入元素。

 

举报

相关推荐

0 条评论