性能方面,番石榴图书馆有多好?

我已经浏览了Google Guava库,并在其中创建了许多优秀,可用的数据结构。

如果有其他人使用过它,那么你可以提供有关它与大数据集一起使用时的表现的反馈吗? 基本上我正在为其运营寻找BigO表示法。

提前致谢

番石榴贡献者在这里。

嗯,有什么可说的? 所有基于散列(和基于枚举)的集合都在恒定时间内具有单项操作,正如您所期望的那样。 ( HashMultisetLinkedHashMultisetConcurrentHashMultisetHashBiMapHashBasedTableImmutableSetImmutableMapEnumMultisetEnumBiMap等都属于该类别。)所有基于树的/已排序的集合都具有单条输入操作的对数时间,包括TreeMultisetImmutableSortedMap ,和ImmutableSortedSet

在multimaps中,文档基本上告诉你Map和value-collection实现,你可以从中找出它。 HashMultimap基本上是HashMapHashSet的, LinkedHashMultimapLinkedHashMapLinkedHashSet的, ArrayListMultimapHashMapArrayList的, LinkedListMultimapLinkedHashMapLinkedList的(性能方面,如果不是技术上真的), TreeMultimapTreeMapTreeSet的, ImmutableSetMultimapImmutableMapImmutableSetImmutableListMultimapImmutableMapImmutableList

唯一不可能不言而喻的可能是SortedMultiset实现在O(log n)时间内提供了subMultiset().size()操作,这是JDK TreeMap不能做到的。

集合的所有视图(我们都喜欢很多视图)会在不变的时间内返回并具有您期望的渐近线。

你有什么更具体的关注吗?

(一般来说,Guava基本上是Google在生产中使用的核心库,我想这是非常有力的证据表明公用事业在重型环境中表现令人满意。另外,Guava正在不断改进,你可以获得这些改进基本上是免费的。)