8

TreeMap - 要素はソートされ
ています HashMap - 要素はソートされていません

したがって、パフォーマンスのためにどのマップを使用する必要があるかを検討する場合はどうすればよいgetでしょうかput?remove

4

3 に答える 3

5

HashMap注文する必要がない限り 、a を使用してください。HashMapより高速です。

つまり、ジェネリック インターフェイスを宣言として使用することで、切り替えを簡単にすることができます。

 Map<String,String> M = new HashMap<String,String>();
 ...use M lots of places...

次に、1 つの場所を切り替えるだけで、コードで新しいマップ タイプが使用されます。

編集:

簡単なタイミング テスト:

import java.util.*;
class TimingTest {
  public static void main(String[] args) {
    Map<String,String> M = new HashMap<String,String>();
    long start = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
      M.put(Integer.toString(i), "foo");
    }
    long end = System.currentTimeMillis();
    System.out.println(end - start);
  }
}
于 2012-05-04T04:52:52.870 に答える
0

反復に関して、それはあなたの意図に依存します:

  • HashMap はそのようなことを保証しません。つまり、ランダムであることを意味します。
  • TreeMap は、指定されている場合は自然順序または Comparator を使用します。
  • LinkedHashMap は、挿入順序に従って反復されます。

さらに、put/get/remove/containsKey の TimeComplexity の場合:

  • ハッシュセット - O(1);
  • TreeMap - O(log(n)) または O(1); -- 参照を参照してください。
  • LinkedHashSet - O(1)。

ギークフォーギークス:

スタックオーバーフロー:

于 2020-07-06T21:12:15.860 に答える