java - Java 中的 HashSet 是如何工作的?

标签 java hashset

<分区>

Possible Duplicate:
How does Java hashmap work?

有人可以向我解释一下 Java 中的 HashSet 是如何工作的,以及为什么它们比使用 ArrayList 更快吗?

最佳答案

HashSet 实际上是一个 HashMap,其中的值始终相同。

HashMap 的工作方式在很多地方都有描述(它也被称为“哈希表”)。简而言之:它生成键(对象)的哈希值并将它们定位到一个表中。然后每次查找键时,都会计算它的哈希值,并直接引用表中的存储桶。这意味着您只有一个操作(最好的情况)来访问 map 。

HashSet 只包含键,所以 .contains(..)O(1)remove(..)HashSetArrayList(O(n))更快的唯一操作。迭代相同,加法相同。

关于java - Java 中的 HashSet 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119840/

相关文章:

java - 在我的案例中使用什么数据结构?

java - 单行函数是否需要大括号?

java - Cassandra Hector 负载平衡

java - 包含在 Java 中无法正常工作的方法

c++ - 多态处理 vector 和hash_set的函数

scala - 最佳 HashSet 初始化(Scala | Java)

java - 如何在Struts2中将JSP目标设置为父框架?

java - 为什么这不能正确计算文件夹的总大小?

java - HashSet 与 ArrayList contains() 几个小型 String 集合的性能

c# - 在哈希集中实现 FIFO 行为