我想知道 guava 的 multiset 和 multipmap 与 JDK 的 List 和 Map 在 1. 时间性能和 2. 内存消耗方面哪个更好
谁能解释一下番石榴的时间和记忆性能?
你混合了很多东西。
List
,Set
并且Map
是 Java 集合库的 3 个基础接口。Guava 的Multiset
and Multimap
,虽然听起来相似,但不是Set
and的直接扩展Map
。
Multiset
并不是真正的 a Set
(实际上它直接扩展Collection
),因为它允许重复,但也不(必然)满足排序List
(为此,您可以拥有 a LinkedHashSet
,这是一个Set
实现)。Multisets通常被称为bag。
Multimap
是一个映射(但不是Map
接口的扩展),接受同一个键的多个值。
另外,请考虑查看Multiset & Multimap:What's the Point?虽然这最初是针对 C++ 的,但公认的答案为您提供了这些有意义的良好用例的具体示例。
因此,性能和内存消耗不是这里的主要关注点。主要关注的是这些是否适合您的用例的数据结构。
此外,接口实际上不允许您对内存消耗做出任何假设(除了对您对列表、集合或映射类型的期望的一般假设之外),因为它们仅定义 API 的合同。如果您想比较它们,您想查看的是这些接口的实际实现。