2

1. 時間パフォーマンスと 2. メモリ消費の観点から、グアバの multiset と multipmap と JDK の List と Map のどちらが優れているか疑問に思っています

グアバの時間と記憶性能について誰か説明できますか?

4

1 に答える 1

2

あなたは複数のものを混同しています。

ListSetおよびMapは、Java コレクション ライブラリの 3 つの基本インターフェイスです。Guava のMultisetandは、似たような響きですが、 and をMultimap直接拡張したものではありません。SetMap

Multisetは、重複を許可するという点で実際にSetは (実際には直接拡張Collectionされます) ではありませんが、(必ずしも) のような順序付けを満たしていません (このため、実装であるListを使用できます)。一般に、マルチセットはバッグと呼ばれることがよくあります。LinkedHashSetSet

MultimapMap同じキーに対して複数の値を受け入れるマップ (ただし、インターフェースの拡張ではありません) です。

また、Multiset & Multimap: What's the Point? も参照してください。これはもともと C++ 用ですが、受け入れられた回答は、これらが理にかなっている適切なユースケースの具体的な例を示しています。


したがって、パフォーマンスとメモリ消費は、ここでの主な関心事ではありません。主な関心事は、これらがユース ケースに適したデータ構造であるかどうかです。

また、インターフェイスでは、API のコントラクトのみを定義するだけなので、(リスト、セット、またはマップ型から期待されるものに関する一般的な仮定を除いて) メモリ消費に関する仮定を実際に行うことはできません。それらを比較したい場合は、これらのインターフェースの実際の実装を調べてください。

于 2012-11-08T16:57:34.930 に答える