2

基本的にキーと値のペアであるデータ構造があります。ただし、辞書とは異なり、キーが重複している可能性がありますが、これは私が設計しているシステムでは正当です。現在、左と右(キーと値)を持つPairオブジェクト(ここの例のように、値のペアのJavaコレクション?(タプル?) )を実装するJavaクラスがあり、これらをArrayListに格納します。

私が欲しいのは、リストが非常に大きくなる可能性があるため、O(N)よりも速くキーを検索する手段です。

転置インデックスを作成する可能性について考えましたが、別の方法があるかどうか疑問に思いましたか?

重複の削減を処理するために、私は本当にキーに基づいてリスト内の位置のリストを取得したいだけです。

Javaである必要はありません-それは私が実装するものです。

乾杯

デビッド

4

3 に答える 3

8

グアバのMultiMapなどのMultiMapを使用しますMap<Key, List<Value>>Map<Key, Set<Value>>

これにより、同じキーに複数の値を設定でき、ルックアップ時間はO(1)になります。

于 2012-08-13T10:59:00.583 に答える
3

キー/値を保存していて、それらのキーが重複している可能性があるため、実際にはMultiMapが必要だと思われます(Guavaバージョンにリンクしましたが、にも存在します)。

または、値のリストへのキーのマップを実装できます。これは少し手間がかかりますが、非常によく似た方法で機能します。

于 2012-08-13T10:59:37.643 に答える
1

複数回存在するキーの値を要求すると、何を取得することになっていますか? その質問に対する答えによっては、Apache Commons MultiMapが問題を解決する可能性があります。

于 2012-08-13T11:00:48.957 に答える