1. ホーム

[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて

2022-03-23 07:17:11

質問

とはどのような違いがあるのでしょうか? HashMap , LinkedHashMapTreeMap をJavaで表示できますか? この3つにはすべて keySetvalues . とは何ですか? Hashtable s?

Map m1 = new HashMap();
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");
print(m1.keySet()); 
print(m1.values()); 

SortedMap sm = new TreeMap();
sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");
print(sm.keySet()); 
print(sm.values());

LinkedHashMap lm = new LinkedHashMap();
lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");
print(lm.keySet()); 
print(lm.values());

解決方法は?

3つのクラスはすべて Map インターフェイスを持ち、ほとんど同じ機能を提供します。最も重要な違いは、エントリーの反復処理を行う順番です。

  • HashMap は、反復処理の順序を全く保証しません。新しい要素が追加されると、完全に変更される可能性さえあります(そして、変更されるでしょう)。
  • TreeMap は、そのキーの compareTo() メソッド(または外部で提供される Comparator ). さらに SortedMap インターフェイスがあり、このソート順序に依存するメソッドが含まれています。
  • LinkedHashMap は、エントリがマップに格納された順番に繰り返し処理を行います。

ハッシュテーブル。 は、ハッシュベースのマップの総称である。Java APIの文脈では Hashtable は、Java 1.1時代、コレクションフレームワークが存在する以前の時代からある、時代遅れのクラスです。なぜなら、そのAPIは機能が重複する旧式のメソッドでごちゃごちゃしており、そのメソッドは同期されているからです(これはパフォーマンスを低下させる可能性があり、一般的には役に立ちません)。使用方法 ConcurrentHashMap Hashtableの代わりに