-1

どの Java コレクション型が最も高速にトラバースされるのか疑問に思っていました。私が最も興味を持っているコレクションは...

  1. 配列
  2. リンクされたリスト
  3. PriorityLinkedList
  4. ハッシュマップ
4

1 に答える 1

2

実際に Collection インターフェースの具体的なクラスの中では、配列を介してトラバースが高速になります。ご存知のように、要素のインデックスでトラバースするためです。インデックス パターンに従うため、インデックスをトラバースすると、トラバースが高速になります。なぜ他の人はいないのですか?一つ一つ説明していきます..

1. LinkedList : LinkedList は挿入順序に従います。データをトラバースして要素を検索すると、すべての要素が最初から検索されます。そのため、トラバースが遅くなります。

2. Queue : LinkedList と PriorityQueue は Queue の 2 つの具体的なクラスです。プライオリティ キューの要素は、使用されるコンストラクターに応じて、自然な順序付けに従って、またはキューの構築時に提供される Comparator によって並べ替えられます。特定の順序でプライオリティ キューの要素をトラバースすることは保証されていません。順序付けられたトラバーサル、Arrays.sort(pq.toArray()) の使用を検討してください。したがって、明示的にソートせずにトラバースすると、提供されたトラバースには役に立たなくなります。

3. HashMap : Collection の代わりに Map を使用する場合、キー要素のハッシュコードで機能するため、トラバースはここでは保証されません。したがって、ここでもトラバースは役に立たなくなります。要素のキー値を指定することで、要素を直接検索できます。

4. PriorityLinkedList : このクラスは Java API には存在しません。

于 2012-04-08T11:25:55.640 に答える