<分区>
我已经通过了Google Guava库,并在其中发现了许多好的、可用的数据结构。
如果其他人使用过它,那么您能否提供有关它在处理大量数据集时的表现如何的反馈?基本上,我正在为其操作寻找 BigO 符号。
提前致谢
<分区>
我已经通过了Google Guava库,并在其中发现了许多好的、可用的数据结构。
如果其他人使用过它,那么您能否提供有关它在处理大量数据集时的表现如何的反馈?基本上,我正在为其操作寻找 BigO 符号。
提前致谢
最佳答案
这里是 Guava 贡献者。
嗯,有什么好说的?所有基于散列(和基于枚举)的集合都在恒定时间内进行单项操作,正如您所期望的那样。 ( HashMultiset
、 LinkedHashMultiset
、 ConcurrentHashMultiset
、 HashBiMap
、 HashBasedTable
、 ImmutableSet
、 ImmutableMap
、 EnumMultiset
、 EnumBiMap
等。)都属于基于树的类别。/sorted 集合的单项操作具有对数时间,包括 TreeMultiset
, ImmutableSortedMap
, 和 ImmutableSortedSet
.
在 multimaps 中,文档基本上告诉你 Map
和值收集实现,你可以从那里弄清楚。 HashMultimap
基本上是一个 HashMap
至 HashSet
小号,LinkedHashMultimap
是 LinkedHashMap
至 LinkedHashSet
小号,ArrayListMultimap
是 HashMap
至 ArrayList
小号,LinkedListMultimap
是 LinkedHashMap
至 LinkedList
s(性能方面,如果技术上不正确),TreeMultimap
是 TreeMap
至 TreeSet
小号,ImmutableSetMultimap
是一个 ImmutableMap
至 ImmutableSet
小号,ImmutableListMultimap
是一个 ImmutableMap
至 ImmutableList
唯一可能不言而喻的可能是 SortedMultiset
实现提供 subMultiset().size()
O(log n)
中的操作时间,仅使用 JDK 是做不到的 TreeMap<E, Integer>
.
集合的所有 View (我们非常喜欢 View )都会在常数时间内返回并具有您期望的渐近线。
您还有什么更具体的顾虑吗?
(总的来说,Guava 基本上是谷歌在生产中使用的核心库,我认为这是非常有力的证据,证明这些实用程序在重型环境中表现令人满意。此外,Guava 也在不断改进,你基本上免费获得这些改进。)
关于java - 性能方面,Guava 库有多好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968958/