Ответ 1
Гуава здесь.
Ум, что там сказать? Все коллекции, основанные на хэш (и на основе enum), имеют однократные операции в постоянное время, точно так же, как вы ожидали. (HashMultiset
, LinkedHashMultiset
, ConcurrentHashMultiset
, HashBiMap
, HashBasedTable
, ImmutableSet
, ImmutableMap
, EnumMultiset
, EnumBiMap
и т.д. все относятся к этой категории.) Все древовидные/отсортированные коллекции имеют логарифмическое время для их однократных операций, включая TreeMultiset
, ImmutableSortedMap
и ImmutableSortedSet
.
Среди мультикадров, ну, в документации в основном говорится об Map
и реализациях набора значений, и вы можете понять это оттуда. HashMultimap
в основном a HashMap
to HashSet
s, LinkedHashMultimap
составляет от LinkedHashMap
до LinkedHashSet
s, ArrayListMultimap
составляет от HashMap
до ArrayList
s, LinkedListMultimap
является a LinkedHashMap
to LinkedList
(по производительности, если не технически верно), TreeMultimap
- это TreeMap
to TreeSet
s, ImmutableSetMultimap
- от ImmutableMap
до ImmutableSet
s, ImmutableListMultimap
- это ImmutableMap
до ImmutableList
s.
Единственное, что может быть не очевидным, вероятно, состоит в том, что реализации SortedMultiset
предоставляют операции subMultiset().size()
в O(log n)
времени, что вы не могли бы сделать только с JDK TreeMap<E, Integer>
.
Все виды коллекций (нам нравятся виды) возвращаются в постоянное время и имеют асимптотику, которую вы ожидаете.
Есть ли что-то более конкретное, о чем вас беспокоило?
(В целом, Guava - это, в основном, основные библиотеки, которые Google использует в производстве, и я бы хотел подумать, что это довольно убедительные доказательства того, что утилиты работают удовлетворительно в тяжелых условиях. Кроме того, Guava постоянно совершенствуется, и вы получить эти улучшения в основном бесплатно.)