13

我浏览了Google Guava库,并在其中发现了许多好的、可用的数据结构。

如果其他人使用过它,那么您能否就它在处理大量数据集时的表现提供反馈?基本上我正在为其操作寻找 BigO 符号。

提前致谢

4

1 回答 1

38

番石榴贡献者在这里。

嗯,有什么好说的?所有基于散列(和基于枚举)的集合在恒定时间内都具有单项操作,正如您所期望的那样。(HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset, HashBiMap, HashBasedTable, ImmutableSet, ImmutableMap, EnumMultiset,EnumBiMap等都属于该类别。)所有基于树的/排序的集合都有其单项操作的对数时间,包括TreeMultiset,ImmutableSortedMapImmutableSortedSet.

在 multimaps 中,文档基本上告诉你Map值集合的实现,你可以从那里弄清楚。 HashMultimapis a HashMapto HashSets, LinkedHashMultimapis a LinkedHashMapto LinkedHashSets, ArrayListMultimapis a HashMapto ArrayLists, LinkedListMultimapis a LinkedHashMapto LinkedLists(性能方面,如果技术上不正确),TreeMultimapis a TreeMapto TreeSets,ImmutableSetMultimapis an ImmutableMapto ImmutableSets,ImmutableListMultimapis an ImmutableMapto ImmutableLists。

唯一不言自明的可能是SortedMultiset实现提供subMultiset().size()了及时的操作O(log n),而仅使用 JDK 是无法做到的TreeMap<E, Integer>

集合的所有视图(我们非常喜欢视图)都会在恒定时间内返回并具有您期望的渐近线。

你有什么更具体的担忧吗?

(总的来说,Guava 基本上是 Google 在生产中使用的核心库,我想这是强有力的证据,证明这些实用程序在重型环境中表现令人满意。此外,Guava 一直在改进,你会得到这些改进基本上是免费的。)

于 2012-06-10T14:41:25.800 回答