我已经浏览了Google Guava库,并在其中找到了许多好的,可用的数据结构。
如果有其他人使用过它,那么您是否可以提供有关与大型数据集一起使用时的执行情况的反馈?基本上我正在为其操作寻找BigO表示法。
提前致谢
答案 0 :(得分:37)
番石榴贡献者。
嗯,有什么可说的?所有基于散列的(和基于枚举的)集合都具有恒定时间的单项操作,完全符合您的预期。 (HashMultiset
,LinkedHashMultiset
,ConcurrentHashMultiset
,HashBiMap
,HashBasedTable
,ImmutableSet
,ImmutableMap
,EnumMultiset
,{ {1}}等等都属于该类别。)所有基于树的/已排序的集合都具有对齐单一条目操作的对数时间,包括EnumBiMap
,TreeMultiset
和ImmutableSortedMap
在multimaps中,文档基本上会告诉你ImmutableSortedSet
和值集合实现,你可以从中找到它。 Map
基本上是HashMultimap
到HashMap
,HashSet
是LinkedHashMultimap
到LinkedHashMap
,LinkedHashSet
是{{} 1}}到ArrayListMultimap
s,HashMap
是ArrayList
到LinkedListMultimap
s(性能方面,如果技术上不合适),LinkedHashMap
是{{} 1}}到LinkedList
s,TreeMultimap
是TreeMap
到TreeSet
,ImmutableSetMultimap
是ImmutableMap
到ImmutableSet
s
唯一可能不是不证自明的事情可能是ImmutableListMultimap
实现在ImmutableMap
时间内提供ImmutableList
次操作,这是JDK {{{{{{ 1}}。
集合的所有视图(我们都喜欢很多视图)会在恒定的时间内返回并具有您期望的渐近线。
你有什么更具体的关注吗?
(一般来说,Guava基本上是Google在生产中使用的核心库,我想这是非常有力的证据表明公用事业在重型环境中表现令人满意。另外,Guava正在不断改进,而你基本上免费获得这些改进。)