2

我想知道 guava 的 multiset 和 multipmap 与 JDK 的 List 和 Map 在 1. 时间性能和 2. 内存消耗方面哪个更好

谁能解释一下番石榴的时间和记忆性能?

4

1 回答 1

2

你混合了很多东西。

ListSet并且Map是 Java 集合库的 3 个基础接口。Guava 的Multisetand Multimap,虽然听起来相似,但不是Setand的直接扩展Map

Multiset并不是真正的 a Set(实际上它直接扩展Collection),因为它允许重复,但也不(必然)满足排序List(为此,您可以拥有 a LinkedHashSet,这是一个Set实现)。Multisets通常被称为bag

Multimap是一个映射(但不是Map接口的扩展),接受同一个键的多个值。

另外,请考虑查看Multiset & Multimap:What's the Point?虽然这最初是针对 C++ 的,但公认的答案为您提供了这些有意义的良好用例的具体示例。


因此,性能和内存消耗不是这里的主要关注点。主要关注的是这些是否适合您的用例的数据结构。

此外,接口实际上不允许您对内存消耗做出任何假设(除了对您对列表、集合或映射类型的期望的一般假设之外),因为它们仅定义 API 的合同。如果您想比较它们,您想查看的是这些接口的实际实现。

于 2012-11-08T16:57:34.930 回答