-1

リンクされたハッシュ マップを反復処理する最も速い方法は何ですか。最後の 100 個のキーと最初の 20 個のキーが必要です。このマップのサイズは、ほとんどの場合 500 ~ 1500 を超えます。

 LinkedHashMap<Integer, Float> doc_1 = service5.getMatchingValue(query);
4

1 に答える 1

2

HashMap を反復処理する場合、他のデータ構造を反復処理する場合と同様に、O(n) ランタイムが残ります...

HashMap の反復処理は、任意の DS の反復処理と同じくらい時間がかかります。

ハッシュマップの特定のエントリのみが必要な場合は、必要なキーに関する情報を保持し、それらのキーのみをループすることができます。キーを使用した HashMap 内の要素へのアクセスは O(1) (または少なくとも amorized) であり、直接アクセス結果を使用して (キーによって) M エントリにアクセスするため、O(M) << O(N の O(M) ランタイムである)。

最後の 100 個のキーをキャッシュに保持し、キャッシュの (コピー) をループするだけで、HashMap と組み合わせて (パフォーマンスの点で) 可能な限り最高のアクセスを得ることができます。

于 2013-10-27T18:06:02.427 に答える