首页 > 解决方案 > HashSet vs ArrayList contains() 几个小字符串集合的性能

问题描述

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

为了使问题更精确,将有:

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

标签: javaperformancearraylisthashset

解决方案


在内存方面,哪个集合更适合这个用例?

一个String[]。不能比这更紧凑了。

当然,这不是真正的 a Collection,但我以最宽松的含义理解了它。

为获得最佳查找 ( contains) 性能,对其进行排序并使用二分查找。

...和时间方面?

可能是 a HashSet,但是你需要测试这样小的集合的性能,因为例如二进制搜索的O(log n)性能实际上可能比哈希表查找的O(1)n性能更快,当时只有 7。

对于这么小的 a 值n,性能差异可能可以忽略不计,并且内存占用可能更重要。

在内存占用和运行时性能之间做出决定,只有可以决定哪个“更合适”。我们不能为你决定。


推荐阅读