java - Trove Collection 如何比标准 Java Collection 更高效?

标签 java collections

在最近的一次采访中,有人问我 HashMap 在 Java 中是如何工作的,我能够很好地解释它并解释在最坏的情况下 HashMap 可能会由于链接而退化为列表。我被要求想出一种方法来提高这种表现,但在面试中我无法做到。面试官让我查“Trove”。

我相信他指的是 this page .我已阅读该页面上提供的说明,但仍然无法弄清楚它是如何克服 java.util.HashMap 的限制的。

即使是提示,我们也将不胜感激。谢谢!!

最佳答案

那里的关键词是开放寻址。所有条目都在一个大数组中,而不是散列到一组桶中。当您添加一个元素时,如果它的空间已被使用,您只需向下移动数组以找到可用空间。

只要数组保持比条目数足够大并且散列函数分布良好,就有可能使平均查找时间保持较小。通过拥有一个阵列,您可以获得更好的性能 - 它对缓存更友好。

但是,如果(比方说)每个键都散列为相同的值,它仍然具有最坏情况下的线性行为,因此它无法避免该问题。

关于java - Trove Collection 如何比标准 Java Collection 更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20021209/

相关文章:

java - 将已安装的小部件添加到 Android Activity

java - 数组未按预期打印

java - RuntimeException : java. io.IOException : unexpected element (uri :"urn:infinispan:config:4.2", 本地 :"property")。预期元素为 <{}entry>

JAVA 或 JAVA SCRIPT 或 Idoc SCRIPT 按字母顺序排序

collections - 与常规集合中的交集相反

java - 有没有办法使用 java8 进一步优化下面的代码?

java - 将文件txt划分为Strings Java的子列表

c# - 使用第二个线程访问领域模型

java - 在 Java 中返回排序列表

java - 类数组列表的迭代器