Crizly:
あなたが起動した場合ArrayList<Obj>
、オーバーループするため-までの時間のメリットがあるArrayList
とに値を入れてHashMap
検索に便利なキーとは?またはのルーピングしArrayList
、かなり否定はあなたにそれを置くことによって得るであろう任意の利点HashMap
?
私はあなたが新しい上の多くの検索を実行するつもりだったならば、あなたはまだ利益を得るだろうと仮定しHashMap
ますが、どのようなただ一つの検索についてはどうですか?
彼らは次のとおりでした:
ただ一つの検索のために作成するにはポイントはありませんHashMap
時間は、それが構築するのにかかるので、HashMap
リニア(だろうO(n)
、それが直接検索するのにかかる時間と同じです)、 ArrayList
。
作成しているのでHashMap
、それは反復処理するのにかかる時間を超えていくつかのオーバーヘッドを持ってArrayList
、直接の繰り返し処理を行うことにより、単一の検索がArrayList
速く構築するよりもする必要がありHashMap
、その後、(漸近的に両方の操作は、同じ時間を取る必要がありますが)いくつかのキーを検索します。
Aは、HashMap
あなたがそれを複数回使用する場合は正当化されます。あなたが実行している場合たとえば、n
上の検索をArrayList
大きさのn
、それがかかるだろうO(n^2)
(それぞれの検索が必要になるので、時間をO(n)
時間を)。
あなたがの要素を置く一方、ArrayList
内をMap
して行うn
上で検索をMap
実行している時間は次のようになりますO(n)
(各検索が予想される一定の時間を要するであろうから)。