gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:11:18 25 4
gpt4 key购买 nike

这个问题本质上是 this one 的附录。它已经询问了 Java 的 contains()性能,但我的用例针对的是具有少量 String 元素的集合。

为了让问题更精确,会有:

  • java.lang.String集合中的元素(因此在 String.equals(...) 调用中使用 contains(...))。
  • 字符串的平均长度为 16。
  • 单个集合中的平均元素数量为 7。
  • Collection 会频繁contains(...)检查,偶尔添加,不删除。
  • 字符串的顺序根本不重要。
  • 此代码将在网络服务器上运行,并且会有大量此类集合对象(每个用户请求约 1000 个)。

哪个集合更适合此用例,无论是内存方面还是时间方面?

最佳答案

Which collection would be a better fit for this use-case, both memory-wise?

一个字符串[]。不能比这更紧凑了。

当然,这并不是真正的集合,但我以尽可能最宽松的含义来理解它。

为了获得最佳查找(包含)性能,请对其进行排序并使用二分搜索。

... and time-wise?

可能是一个HashSet,但是您需要测试这种小集合的性能,因为例如O(log n)性能当 n 仅 7 时,二分搜索实际上可能比哈希表查找的 O(1) 性能更快。

对于较小的 n 值,性能差异可能可以忽略不计,而内存占用可能更重要。

在内存占用和运行时性能之间做出选择时,只有才能决定哪个“更适合”。我们无法为您做出决定。

关于java - HashSet 与 ArrayList contains() 几个小型 String 集合的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50015258/

25 4 0