首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashSet的底层DataStructure

HashSet的底层DataStructure
EN

Stack Overflow用户
提问于 2013-07-10 12:12:44
回答 4查看 7.6K关注 0票数 4

对于ArrayList,底层dataStructure是数组;对于LinkedList,它是链接对象;对于HashMap或HashTable,它可以是LinkedList或树的数组,HashSet中使用的数据结构是什么

EN

回答 4

Stack Overflow用户

发布于 2013-07-10 12:15:59

根据the Javadoc的说法,HashSet的支持数据结构是HashMap。

JDK 1.6代码验证了这一点:

代码语言:javascript
复制
public HashSet() {
    map = new HashMap<>();
}
票数 6
EN

Stack Overflow用户

发布于 2013-07-10 12:18:57

哈希的天真想法是将一个元素存储到一个数组中的位置索引,计算如下:

  • 通过处理元素的数据并生成一个整数值来获得元素的范围(对元素进行“散列”的想法大致意味着“研磨”它)
  • 使用一个简单的mod操作来映射到数组的element_hash_code

因此,这些可以通过数组或链表来完成。

在java中,HashSet在内部使用HashMap

从源代码

代码语言:javascript
复制
public HashSet() {
    map = new HashMap<E,Object>();
}
票数 5
EN

Stack Overflow用户

发布于 2013-07-10 12:15:50

HashSet在内部使用HashMap来存储数据。我相信HashMap是一个Entry对象数组。

了解HashMap内部结构的相关帖子:

https://stackoverflow.com/questions/11596549/how-does-javas-hashmap-work-internally

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17562325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档