時間計算は、ArrayListの上をループし、HashMapの対の値を置くだけのArrayListを検索します

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)(各検索が予想される一定の時間を要するであろうから)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=197858&siteId=1