私はGoogle Guavaライブラリを調べて、そこに多くの優れた使用可能なデータ構造を見つけました。
他の誰かがそれを使用した場合、巨大なデータ セットで使用したときのパフォーマンスについてフィードバックを提供できますか? 基本的には、その操作の BigO 表記を探しています。
前もって感謝します
私はGoogle Guavaライブラリを調べて、そこに多くの優れた使用可能なデータ構造を見つけました。
他の誰かがそれを使用した場合、巨大なデータ セットで使用したときのパフォーマンスについてフィードバックを提供できますか? 基本的には、その操作の BigO 表記を探しています。
前もって感謝します
グアバの寄稿者はこちら。
ええと、何を言いたいのですか?すべてのハッシュ ベース (および列挙型ベース) のコレクションには、予想どおり、一定時間内に単一エントリの操作があります。( HashMultiset、LinkedHashMultiset、ConcurrentHashMultiset、HashBiMap、HashBasedTable、ImmutableSet、など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 は常に改善されており、それらの改善が得られます。基本的に無料です。)