gpt4 book ai didi

Java 哈希集性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:50 25 4
gpt4 key购买 nike

我理解基于HashMapHashSet,因为它们非常相似。它使代码更加灵活,并最大限度地减少了实现工作。但是,如果类禁止 null 元素,HashSet 的 Entry 中的一个引用变量对我来说似乎是不必要的,因此整个 Entry 没有意义。尽管如此,Entry 需要 24 字节内存/元素,而如果我的数据正确的话,包含集合元素的单个数组将只需要 4 字节/元素。 (除了数组的头部)

如果我的论点是正确的,那么优势是否真的超过了这种性能影响?

(如果我错了,我也会吸取教训)

最佳答案

虽然这个问题主要是基于意见的,但我将就该主题总结几点:

  • HashSet 多年前出现在 Java 1.2 中。现在很难猜测当时做出设计决策的确切原因,但显然 Java 并未用于高负载应用程序;性能的作用不如简单性。
  • 您是对的,HashSet 在内存消耗方面不是最优的。问题已知,bug JDK-6624565 已注册,并且不时在 core-libs-dev 上进行讨论。但这是许多现实世界应用程序的障碍吗?可能不会。
  • 对于那些 HashSet 内存使用 Not Acceptable 不常见应用程序,已经有很好的替代方案,例如 trove THashSet
  • 请注意,开放寻址算法有其缺点,例如负载因子接近 1 时性能显着下降;元素去除困难。参见 related answer

关于Java 哈希集性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com