我有一个简单的字符串对象集合,可能大约有 10 个元素,但是我在生产环境中使用这个集合,以便我们在该集合中搜索给定的字符串数百万次,我们可以用来获取的最佳集合或数据结构是什么最好的结果,以便可以在 0(1) 时间内执行搜索操作,我们可以在这里使用 HashMap,但是搜索的顺序是恒定的时间而不是 0(1) 我想确保搜索是 0(1)。
如果存在,我们的数据结构必须返回 true ,否则如果不存在则返回 false
我有一个简单的字符串对象集合,可能大约有 10 个元素,但是我在生产环境中使用这个集合,以便我们在该集合中搜索给定的字符串数百万次,我们可以用来获取的最佳集合或数据结构是什么最好的结果,以便可以在 0(1) 时间内执行搜索操作,我们可以在这里使用 HashMap,但是搜索的顺序是恒定的时间而不是 0(1) 我想确保搜索是 0(1)。
如果存在,我们的数据结构必须返回 true ,否则如果不存在则返回 false
使用HashSet<String>
结构。该contains()
操作的复杂度为 O(1)。
常数时间为O(1)。 HashMap
很好。(或者HashSet
,取决于您需要 aSet
还是Map
。)
如果你的 set 是不可变的,Guava 的ImmutableSet
内存占用会减少约 3 倍(并且可能会给你一个小的常数因子来提高速度)。
如果你不能像之前建议的那样使用 HashSet/HashMap,你可以编写一个Radix Tree实现。