基本的に、ペアを格納し、値によって要素の上位 N 数を取得できる Java で最適なデータ構造を探しています。これを O(n) 時間で実行したいと思います。ここで、n はデータ構造内の整数の数です。
入力例は、
<"john", 32>
<"dave", 3>
<"brian", 15>
<"jenna", 23>
<"rachael", 41>
N=3 の場合、降順で並べ替えたい場合は、rachael、john、jenna を返すことができるはずです。
ある種の hashMap を使用すると、挿入は高速ですが、順番に取得するとコストがかかります。順序付けを維持するデータ構造を使用すると、挿入が高価になり、取得が安価になります。非常にうまくかつ非常に高速に実行できる最適なデータ構造を見つけることができませんでした。
どんな入力でも大歓迎です。ありがとう。
[更新しました]
それがより明確になる場合は、別の方法で質問させてください。私は一定の時間に O(1) を hashMap に挿入できることを知っています。さて、O(n)時間で値によってソートされた順序から要素を取得するにはどうすればよいですか?ここでn=データ構造内の全体の数? それが理にかなっていることを願っています。