13

私はGoogle Guavaライブラリを調べて、そこに多くの優れた使用可能なデータ構造を見つけました。

他の誰かがそれを使用した場合、巨大なデータ セットで使用したときのパフォーマンスについてフィードバックを提供できますか? 基本的には、その操作の BigO 表記を探しています。

前もって感謝します

4

1 に答える 1

38

グアバの寄稿者はこちら。

ええと、何を言いたいのですか?すべてのハッシュ ベース (および列挙型ベース) のコレクションには、予想どおり、一定時間内に単一エントリの操作があります。( HashMultisetLinkedHashMultisetConcurrentHashMultisetHashBiMapHashBasedTableImmutableSet、などImmutableMapはすべてそのカテゴリに分類されます。) 、EnumMultiset、およびを含むすべてのツリーベース/ソートされたコレクションには、単一エントリ操作の対数時間が含まれます。EnumBiMapTreeMultisetImmutableSortedMapImmutableSortedSet

マルチマップの中でも、ドキュメントは基本的にMapと 値コレクションの実装を示しており、そこから理解することができます。 HashMultimap基本的には、aHashMapからHashSets 、 LinkedHashMultimapaLinkedHashMapからLinkedHashSets、ArrayListMultimapaHashMapからArrayLists、LinkedListMultimapaLinkedHashMapからLinkedLists (技術的に真実ではないにしても、パフォーマンスに関して)、TreeMultimapaTreeMapからTreeSets、ImmutableSetMultimapis anImmutableMapからImmutableSets、ImmutableListMultimapis anImmutableMapからImmutableLists です。

自明ではないかもしれない唯一のことは、おそらく、SortedMultiset実装が時間内にsubMultiset().size()操作を提供することです。O(log n)これは、JDK だけでは実行できませんでしたTreeMap<E, Integer>

コレクションのすべてのビュー (私たちはビューが大好きです) は一定の時間で返され、期待どおりの漸近線が得られます。

もっと具体的に気になったことはありますか?

(一般に、Guava は基本的に Google が本番環境で使用するコア ライブラリです。これは、ユーティリティが負荷の高い環境で満足のいくパフォーマンスを発揮することのかなり強力な証拠だと思います。さらに、Guava は常に改善されており、それらの改善が得られます。基本的に無料です。)

于 2012-06-10T14:41:25.800 に答える