質問

の違いを教えてくる HashMapHashtable Java?

効率のための外ネジ付き。

役に立ちましたか?

解決

あの違い HashMapHashtable Java:

  1. Hashtable同期, は HashMap いません。この HashMap より良い外ネジ付きアプリのunsynchronized物はどのように絡んでいるのかを調べに同期します。

  2. Hashtable できない null キーや値がある。 HashMap できます null キーの数 null 値です。

  3. 一HashMapのサブクラスです LinkedHashMap, ので、その場合におい予測可能な繰り返し順序で挿入順のデフォルト)、簡単にスワップの HashMap のための LinkedHashMap.このなりやすく場合ございますクリアできました Hashtable.

年同期の問題を解決すされています。 HashMap.場合に同期が問題になるので、見 ConcurrentHashMap.

他のヒント

ことに注意してくださを多くの回答状態ハッシュテーブルは同期. 実際に本を購入す。 同期のアクセス用メソッド/mutator方法を停止二つのスレッドの追加または削除をマップから同時に、現実の世界ではしばしば必要な追加synchronisation.

非常に共通ムは"チェックして"すなわち見てのエントリーの Map, 追加しない場合はすでに存在しています。これはその原子操作のどちらを使用するにしても Hashtable または HashMap.

は、同様に同期 HashMap を取得できます:

Collections.synchronizedMap(myMap);

が正しく実装するロジックが必要 追加synchronisation 形式:

synchronized(myMap) {
    if (!myMap.containsKey("tomato"))
        myMap.put("tomato", "red");
}

でも繰り返し処理を行は、 Hashtable's"エントリー(または HashMap 得られた Collections.synchronizedMap ないスレッドに対して安全なもガードの Map からの変更により追加に同期します。

の実装を ConcurrentMap インタフェース(例えば ConcurrentHashMap)の解決の一部を含め スレッドに対して安全チェックイン後-法意味論 など

ConcurrentMap.putIfAbsent(key, value);

Hashtable であるレガシーコードです。あ約 Hashtable ることができないのをベースに制御を行っています。 HashMap または微の HashMap, ので、新しいコードでは、と思いますか他の正当化に戻る Hashtable.

この質問は、よく聞かれる質問インタビューで確認候補を理解し正しい使い方のコレクションクラスの覚の代替的解決可能です。

  1. のHashMapクラスではほぼ相当するハッシュテーブルを除き、その非同期および許可null.(HashMapでnull値としてのキーと値はハッシュテーブルすることを認めていませんnull).
  2. HashMapとを保証するものではありませんの地図って一定です。
  3. HashMapは非同期にはハッシュテーブルは同期化されます。
  4. 反復子は、HashMapは安全なの列挙子のハッシュテーブルは、スロー ConcurrentModificationException場合、その他のスレッドの変数を変更する機能を提供する地図の構造を追加したり削除したりし他の要素の反復子自体のremove()メソッドがあります。この保証動作および保存することができまJVMにベストです。

注一部の重要な条件

  1. 同期とは一つだけのスレッドの変更ができるハッシュテーブルでのワンポイント。基本的には、このスレッドを行う前に更新されるハッシュテーブルをロックを取得するオブジェクトを待つロックまでお問い合わせください。
  2. 安全では、コンテキストからの反復子.場合、反復子が作成されるcollectionオブジェクトやその他のスレッドを変更するcollectionオブジェクト"構造"、同時変更の例外がスローされます。でほかのスレッドが呼び出し"の設定方法"に来ませんの変更はコレクション"の構造".ただし、前の呼び出し"セット"は、コレクションは変更された構造,"IllegalArgumentException"スローされます。
  3. 構造的に変更と削除や挿入する要素が効果的に体制に変更。

HashMapを同期化できるよ

Map m = Collections.synchronizeMap(hashMap);

地図コレクションビューの代わりにサービスへのリンクを繰り返し 由列挙オブジェクト。コレクションビューションやクライアントから依頼さ 表現力のインタフェースとしては、後述す。地図るときに対して繰り返し処理を実行するキーの値、またはサーバ上にkey-value形式で格納;ハッシュテーブルを提供しない第三のオプションです。地図を安全 除去作品の中で繰り返し処理;ハッシュテーブルかとなった。最後に、地図の修正マイナー不足のハッシュテーブルインタフェース。ハッシュテーブルはと呼ばれる手法で含まれる場合にtrueを返します ハッシュテーブルを含む指定された値にします。指定した名前、す 方法がある場合はtrueを返しますハッシュテーブルが含まれる指定された鍵が のキーが最初にアクセス機構のためのハッシュテーブル.の地図 インタ消このソースの混乱により名称変更の方法 containsValue.また、このインタフェースの整合性— containsValue緯containsKey.

Mapインタフェース

HashMap:の実装を Map インタフェース使用のハッシュコードインデックスは、配列になります。Hashtable:こんにちは,1998呼び出されます。欲しいので、彼らのコレクションAPIです。

真剣にもいないほうがより離れて Hashtable ます。シングル-ネジ付きアプリも必要としない別のオーバーヘッドsynchronisation.性の高いアプリを同時に被害妄想synchronisationが飢餓、デッドロック、または不要なゴミ収集の一時停止.のようにTim Howland指摘の通り、利用する場合もあるでしょう ConcurrentHashMap です。

注意して HashTable したレガシィ最後のトークセッションでは、Java Collections Framework(JCF)を導入した改修を実施する Map インタフェース。うにした VectorStack.

そのため、必ずらに新しいコードであり、常により良い代替のJCF していたのを指摘しなければなりません。

こちらは Java集チートシート がございます。通知の灰色のブロックのクラスのハッシュテーブル、ベクトルおよびスタックです。

enter image description here

るもののほか、izbと HashMap でnull値は、 Hashtable ではできません。

ることにも注意が Hashtable を拡張し Dictionary クラスとしての Javadocs 状態は過去のもとに置き換えられ Map インタフェース。

があり、多くの答えて掲載しています。私の追加からポイントを総括します。

HashMapHashtable の両方を格納する場合に使用される データのキーと値形.両方の使用のハッシュの技術を保存す。もと違うことがたくさんありHashMapとハッシュテーブルの授業とは以下のとおりです。****

HashMap

  1. HashMap は同期化されます。ではないスレッドに対して安全でない、と多くのスレッド適切な同期のコードです。
  2. HashMap す一方がnullキーの複数null値です。
  3. HashMap 新しいクラスに導入したJDK1.2.
  4. HashMap が速い。
  5. そのまま生かすことができま HashMap として同期呼び出すコード
    Map m = Collections.synchronizedMap(HashMap);
  6. HashMap が往来するIterator.
  7. 反復子に HashMap はなます。
  8. HashMap 継承しAbstractMapクラスです。

ハッシュテーブル

  1. Hashtable は同期化されます。このスレッド-安全-共有できる多くのスレッド)。
  2. Hashtable のできない。nullのキーや値とします。
  3. Hashtable は従来のクラスです。
  4. Hashtable が遅くなります。
  5. Hashtable が内部的に同期できないunsynchronized.
  6. Hashtable が往来査は、Iterator.
  7. 列挙子に Hashtable はいない。
  8. Hashtable を継承した辞書クラスです。

さらに読む の違いがよくわかりませHashMapとハッシュテーブルをJava?

enter image description here

ご紹介します。で比較し、異なるデータ構造とHashMapとハッシュテーブル.比較には、高精度、明確にわかりやすくお話いただいた。

Javaマトリクス収集

Hashtable 類似の HashMap と同様のインタフェース。でのご利用をお勧めします HashMap, ない限り、必要な支援のためのレガシーアプリケーションは必要なものsynchronisationとして Hashtables 方法は同期.う場合としないマルチスレッド HashMaps スケジュールでベット。

のもう一つの重要な違いはハッシュテーブル、hashmapは、反復子のHashMapが不可能なので、フェイルファストを列挙子のハッシュテーブルは、スロー ConcurrentModificationException場合、その他のスレッドの変数を変更する機能を提供する地図の構造を追加したり削除したりし他の要素の反復子自体のremove()メソッドがあります。この保証動作および保存することができまJVMに最高です。"

私のソース: http://javarevisited.blogspot.com/2010/10/difference-between-hashmap-and.html

横すべてのその他の重要な側面でであることが明らかにされた。レーション、コレクションAPI(地図インタフェース)で修正が施されたすべての時間に準拠して、"最新の最大の"追加Javaの仕様

たとえば、Java5地図で繰り返し処理:

for (Elem elem : map.keys()) {
  elem.doSth();
}

versusのハッシュテーブルのアプローチ:

for (Enumeration en = htable.keys(); en.hasMoreElements(); ) {
  Elem elem = (Elem) en.nextElement();
  elem.doSth();
}

Java1.8お約束できる構築するとともにアクセスHashMapsのような古き良きスクリプト言語:

Map<String,Integer> map = { "orange" : 12, "apples" : 15 };
map["apples"];

更新: れない土地1.8...:(

ているプロジェクトコインコレクション強化するのがJDK8?

  • ハッシュテーブル 同期された場合、自然材料以外を使用しないことで単一のスレッドが使用でき HashMap, であるunsynchronizedバージョン。Unsynchronized物がもう少しperformant.この場合、複数のスレッドにアクセスHashMapが同時に少なくとも一つの構造的にマップを変更す動するのです。ユ巻unsynchronized図同期を利用した:

    Map m = Collections.synchronizedMap(new HashMap(...));
    
  • ハッシュテーブルなどを含めないでくださいnull以外のオブジェクトとしてのキーと値です。HashMapできるとして展開しているのがnullキーやnull値です。

  • Iteratorの地図は不可能なので、フェイルファストの場合、マップが構造的に変更を加えた後に、反復子を作成し、いずれの方法を使ってもよる場合を除き、反復子自体のremove法の反復子をスローします、 ConcurrentModificationException.このように同時に変更、反復子はきれいにな危険にさら任意ですが、非決定的な行動を予測できない時点において予測します。 の列挙は返されたハッシュテーブルのキーと要素法はいない。

  • ハッシュテーブルは、HashMapに Java Collections Framework (以降のJava2プラットフォームv1.2では、ハッシュテーブルした改修を実施する地図のインターフェースを

  • ハッシュテーブルとレガシーコードの書類のご利用 ConcurrentHashMap のハッシュテーブルの場合、スレッドを安全に高い並行実施が望まれる。

  • HashMapを保証するものではありませんの順序で要素を返します。のためのハッシュテーブルうことなんでしょうけれど同じだが、私は全くないからressourceが明記されている。

HashMapHashtable 重要なアルゴリズムの違いです。ついて述べたように、このメソッドは以前ようんです。 HashMap を構築し、ハッシュテーブルと電源の二つのサイズ増加が動的になるためのもつ要素(衝突)バケットまでの撹拌の要素も一般要素です。しかし、 Hashtable の実装により、より細かく制御のハッシュのかを知っている場合を確認することができまわることは可能では、テーブルサイズを使用例最も近い素数を値のドメインのサイズは、これ以上のパフォーマンスをHashMapる以下衝突用の場合があります。

から明らかな違いてこの問題のハッシュテーブルとしての"マニュアル車"車いよい制御が可能なので、ハッシュ、HashMapとしての"自動車"カウンターパートと一般的に行う。

ハッシュテーブルは同期はHashMapい分けるどれがいいですか?このハッシュテーブル以下のHashmap.

外ネジ付きアプリを使用HashMapてその同意可能です。

に基づく情報 こちらの, いくHashMap.私の最大の特長は、Java防止できますから改良したものでな繰り返し処理を行う場合を除き、いiterator.

A Collection —とも呼ばれるコンテナにおけるオブジェクト群に複数の要素を一つのユニットです。 Collectionsを格納する場合に使用される探索の操作を通して集計データです。九大コレクションの枠組み W 統一のための建築を代表す操作ョンにします。

HashMap JDK1.2 およびハッシュテーブル JDK1.0, とを表すのに使用されるグループのオブジェクトで表されることで <Key, Value> 対になっています。各 <Key, Value> ペアと呼ばれ Entry オブジェクトです。の収集に応募すると、オブジェクトの HashMapHashtable.キーコレクションの中で一意でなければならないは特徴的です。[そのまま使用される検索、マップされた値を特定の鍵となる。値のコレクションの中で重複しています。]


« スーパークラス、レガシー-収集枠組み員

ハッシュテーブルは従来のクラス紹介 JDK1.0, であるサブクラスの辞書クラスです。から JDK1.2 ハッシュテーブルは再生を実施 Mapインタフェース を会員の枠組みHashMapのJava集枠組みから始め、その導入 JDK1.2.HashMapのサブクラスAbstractMapのクラスです。

public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable { ... }

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { ... }

« 初期容量と負荷係数

の容量が数のバケットのハッシュテーブルの初期容量は、単に、能力、時間のハッシュテーブルが作成されます。なお、ハッシュテーブルが開:の場合"hashcollision"シバケット店舗で複数の作品は、検索される。"負荷係数"は、測定の完全ハッシュテーブル前に容量が自動的に増えました。

HashMapを構築しま空のハッシュテーブルのデフォルトの初期容量 (16) デフォルトの負荷係数(0.75).場としてのハッシュテーブルを構築しますの空のハッシュテーブルのデフォルトの初期容量 (11) および負荷係数/入比率(0.75).

Hash Map & Hashtable

« 構造変更の場合はハッシュの衝突

HashMap, Hashtable の場合はハッシュの衝突れている地図のエントリにリンクのリストが表示されます。 Java8からのために HashMap 場合はハッシュバケットがある閾値を超えて、バケツとスイッチから linked list of entries to a balanced tree.向上に向けた最悪の場合の性能をO(n)時間-O(log n).を変換する、リストバイナリーツリーのハッシュコードを使用して分岐します。がある場合は二つの異なるュー内のバケット、とき、右側のツリーをはじめとするすべてにおいて理由があります。そのュー内が等しい HashMap このキーと比較し、比較の方向性を明確にし、具体化する、いくつかの秩序を維持できる。では、良い練習ができるの鍵 HashMap .追加応募の場合バケットサイズに達する TREEIFY_THRESHOLD = 8 変換リンクリストの作品のバランスの取れたツリーで、取り外し作品以内 TREEIFY_THRESHOLD ほとんどの UNTREEIFY_THRESHOLD = 6 まreconvertバランスツリーへのリンクリストの作品の応募がありました。 Java8SRC, stackpost

« コレクションビューの反復が速く、安全

    +--------------------+-----------+-------------+
    |                    | Iterator  | Enumeration |
    +--------------------+-----------+-------------+
    | Hashtable          | fail-fast |    safe     |
    +--------------------+-----------+-------------+
    | HashMap            | fail-fast | fail-fast   |
    +--------------------+-----------+-------------+
    | ConcurrentHashMap  |   safe    |   safe      |
    +--------------------+-----------+-------------+

Iterator はなます。ん。eですConcurrentModificationExceptionがコレクションが変更された繰り返し処理以外のもの自体のremove()メソッドがあります。場として Enumeration は安全です。ない例外をスローした場合、コレクションが変更された繰り返し処理.

によるJava APIドキュメント、反復子が常に優先の一覧取得を行います。

注意: の機能を列挙インタフェースが重複しての反復子によりインターフェース。また、反復子の追加オプションがremoveオペレーション、短い方法です。新しい実装を避けるこ反復子を返ザ一覧の取得を行います。

Java5を導入しConcurrentMapェ: ConcurrentHashMap -高兼職の状況、高性能 ConcurrentMap 実施の背景にハッシュテーブル。この実装ではないブロックが検索できるクライアントに選択し、並行処理レベルにしました。であるものに対してのドロ Hashtable:を実施するほか、 ConcurrentMap, かつての"遺産"の方法に特有の Hashtable.

  • HashMapEntrys値は 揮発性 実微粒子整合性のために競合している変更やその後の読み込み;それぞ反映して最終更新

  • 反復子は、列挙はまず安全を反映した状態にある時点からの創造の反復子/列挙;この同時読み込みおよび修正のコスト削減の一貫性を追求します。いConcurrentModificationExceptionをスローしません.しかし、反復子に使用できるよう設計される一のスレッドです。

  • のように Hashtable 異な HashMap, このクラスは、許さないnullとして使用するキー値です。

public static void main(String[] args) {

    //HashMap<String, Integer> hash = new HashMap<String, Integer>();
    Hashtable<String, Integer> hash = new Hashtable<String, Integer>();
    //ConcurrentHashMap<String, Integer> hash = new ConcurrentHashMap<>();

    new Thread() {
        @Override public void run() {
            try {
                for (int i = 10; i < 20; i++) {
                    sleepThread(1);
                    System.out.println("T1 :- Key"+i);
                    hash.put("Key"+i, i);
                }
                System.out.println( System.identityHashCode( hash ) );
            } catch ( Exception e ) {
                e.printStackTrace();
            }
        }
    }.start();
    new Thread() {
        @Override public void run() {
            try {
                sleepThread(5);
                // ConcurrentHashMap  traverse using Iterator, Enumeration is Fail-Safe.

                // Hashtable traverse using Enumeration is Fail-Safe, Iterator is Fail-Fast.
                for (Enumeration<String> e = hash.keys(); e.hasMoreElements(); ) {
                    sleepThread(1);
                    System.out.println("T2 : "+ e.nextElement());
                }

                // HashMap traverse using Iterator, Enumeration is Fail-Fast.
                /*
                for (Iterator< Entry<String, Integer> > it = hash.entrySet().iterator(); it.hasNext(); ) {
                    sleepThread(1);
                    System.out.println("T2 : "+ it.next());
                    // ConcurrentModificationException at java.util.Hashtable$Enumerator.next
                }
                */

                /*
                Set< Entry<String, Integer> > entrySet = hash.entrySet();
                Iterator< Entry<String, Integer> > it = entrySet.iterator();
                Enumeration<Entry<String, Integer>> entryEnumeration = Collections.enumeration( entrySet );
                while( entryEnumeration.hasMoreElements() ) {
                    sleepThread(1);
                    Entry<String, Integer> nextElement = entryEnumeration.nextElement();
                    System.out.println("T2 : "+ nextElement.getKey() +" : "+ nextElement.getValue() );
                    //java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode
                    //                                          at java.util.HashMap$EntryIterator.next
                    //                                          at java.util.Collections$3.nextElement
                }
                */
            } catch ( Exception e ) {
                e.printStackTrace();
            }
        }
    }.start();

    Map<String, String> unmodifiableMap = Collections.unmodifiableMap( map );
    try {
        unmodifiableMap.put("key4", "unmodifiableMap");
    } catch (java.lang.UnsupportedOperationException e) {
        System.err.println("UnsupportedOperationException : "+ e.getMessage() );
    }
}
static void sleepThread( int sec ) {
    try {
        Thread.sleep( 1000 * sec );
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

« NullキーやNull値

HashMap できる最大のものは、nullキーの数をnull値です。場として Hashtable なもnullキーやnull値の場合、キーまたは値がnullを返しますNullPointerException。

« 同期スレッドに対して安全

Hashtable 内部で同期化されます。そのため、非常に安全に使用 Hashtable マネジ付き願います。場として HashMap は内部的に同期化されます。受けることができる主題ではない安全な使用 HashMap マルチレールを外部同期します。できる外部同期 HashMap を使用 Collections.synchronizedMap() 方法。

« 性能

として Hashtable 内部で同期するため、 Hashtable やや遅の HashMap.


@見

のためのネジ付きアプリにできることが多く離れConcurrentHashMap-によって異なります。

1.HashmapHashTable 両店。

2.Hashmap での複数のキーとして null. Hashtable できない店舗 null.

3.HashMap は同期化されませんが Hashtable は同期化されます。

4.HashMap 同期が可能 Collection.SyncronizedMap(map)

Map hashmap = new HashMap();

Map map = Collections.SyncronizedMap(hashmap);

ほかの違いは既に述べたようにできることからJava8, HashMap 動的に置き換えはノード(リンクリスト)で利用するバケツTreeNodes(赤-黒ツリーにも高いハッシュの衝突が存在する場合、最悪の場合 検索した場合

O(log(n)) HashMap Vs O(n) Hashtable.

*上記の改善が適用されていないため Hashtable だけ HashMap, LinkedHashMap, は、 ConcurrentHashMap.

ちなみに、現在、

  • TREEIFY_THRESHOLD = 8 :の場合バケットするとき表示されている8ノードは、リンクリストに変換するバランスです。
  • UNTREEIFY_THRESHOLD = 6 :がバケットが小さすぎによる除去またはサイズ変更)のツリーへの変換リンク一覧です。

5つの基本的な差とのハッシュテーブルやHashMaps.

  1. マップで繰り返し処理を実行し、検索キーの値は、サーバ上にkey-value形式で格納して、ハッシュテーブルがないこと。
  2. にハッシュテーブル機能がありますcontains()は非常に混乱を利用します。その意味で少し逸れ.るかどうかも含まれキーまたは含む。厳しました。同じ地図をContainsKey()のContainsValue()関数は、ある意味では、非常にわかりやすい。
  3. にhashmapを除去することができ要素を繰り返し処理,無事です。ることができないに超えるセットはハッシュテーブル.
  4. 超えるセットはハッシュテーブルにデフォルトと同期でも使用でき、複数のスレッドです。場としてHashMapsは同期化されませんよ、デフォルトで使用することが可能ですのみで単一のねじになります。ができ換HashMapを同期用回収utilクラスのsynchronizedMap(地図m)機能を搭載しています。
  5. ハッシュテーブル許さないのではないでしょうnullキーやnull値です。場としてのHashMapでnullの場合、複数のnull値です。

私の小さな貢献:

  1. 最初の、そして最も重要な違 HashtableHashMap は、 HashMap はスレッドセーフではありませんが Hashtable あるスレッドを安全に収集します。

  2. 第二重要な差 HashtableHashMap 業績て HashMap は同期化されませんのでどのように絡んでいるのかを調べ Hashtable.

  3. 第三差 Hashtable vs HashMap であること Hashtable は旧クラスの使用 ConcurrentHashMapHashtable Java.

ハッシュテーブル は従来のクラスでは、jdkでいきます。交換用のこと ConcurrentHashMap.の場合を必要としないスレッドの安全性、利用 HashMap ではない threadsafe がより速く、使用ます。

1)ハッシュテーブルは同期はhashmapいません。2)別の違いは、反復子は、HashMapは安全なの列挙子のハッシュテーブルなんです。変更した場合の地図を繰り返し処理しょう。

3)HashMap null値では、ハッシュテーブルは来ない。

HashMapとハッシュテーブル

  • 重要なポイントを考HashMapとハッシュテーブル.以下をご覧ください。

1)ハッシュテーブル、Hashmapの実装は、java.util.Mapインタフェース 2)Hashmapとハッシュテーブルは、ハッシュに基づく収集します。仕事ハッシュ.これらの類似性HashMapとハッシュテーブル.

  • の違いは何ですかHashMapとハッシュテーブル?

1)最初の違いは、HashMapはスレッドに対して安全なハッシュテーブルはThreadSafe
2)HashMapは性能的に良いのではないのでスレッドで安全です。ながらのハッシュテーブル性能的にはならないのでスレッドで安全です。複数のスレッドがアクセスできないハッシュテーブルでも同時に行います。

HashMap:このクラス内java.utilパッケージで使いたい場合は、あらかじめの要素はキーと値形式です。

ハッシュテーブル:では従来のクラスをロジェクトにおけるそれぞれの内蔵。

Hashtable:

ハッシュテーブル データ構造で保価値のキー-値ペアです。まれていません。nullのキーや値がある。を取得しま NullPointerException 追加した場合はnull値とします。では同期化されます。で付属する。唯一のスレッドでアクセス ハッシュテーブル 特定の時間。

:

import java.util.Map;
import java.util.Hashtable;

public class TestClass {

    public static void main(String args[ ]) {
    Map<Integer,String> states= new Hashtable<Integer,String>();
    states.put(1, "INDIA");
    states.put(2, "USA");

    states.put(3, null);    //will throw NullPointerEcxeption at runtime

    System.out.println(states.get(1));
    System.out.println(states.get(2));
//  System.out.println(states.get(3));

    }
}

HashMap:

HashMap のような ハッシュテーブル でも受け付けたキー値のペアです。これにnullのキーや値がある。その性能により HashTable, のでは unsynchronized.

例:

import java.util.HashMap;
import java.util.Map;

public class TestClass {

    public static void main(String args[ ]) {
    Map<Integer,String> states = new HashMap<Integer,String>();
    states.put(1, "INDIA");
    states.put(2, "USA");

    states.put(3, null);    // Okay
    states.put(null,"UK");

    System.out.println(states.get(1));
    System.out.println(states.get(2));
    System.out.println(states.get(3));

    }
}

HashMapsでの自由の同期やバッグがあります

HashMap はエミュレーションおよびそのために使用できる GWT client codeHashtable いません。

同期またはスレッドに対して安全 :

ハッシュマップには同期化されませんがあり、したがって、それはないthred安全で共有することはできませんの間、複数のスレッドでない適切な同期をブロックは、ハッシュテーブルは同期があり、したがって、それはスレッドで安全です。

Nullキーやnull値 :

HashMapでnullキーの数をnull値です。ハッシュテーブルできない。nullのキーや値がある。

繰り返し処理の値:

反復子のHashMapが不可能なので、フェイルファスト反復子が列挙子のハッシュテーブルは、スロー ConcurrentModificationException場合、その他のスレッドの変数を変更する機能を提供する地図の構造を追加したり削除したりし他の要素の反復子自体のremove()メソッドがあります。

スーパークラスおよびレガシー :

HashMapはサブクラスAbstractMapのクラスは、ハッシュテーブルはサブクラスの辞書クラスです。

性能 :

としてのHashMapは同期化されませんのでより速やかに比べてハッシュテーブル.

参照 http://modernpathshala.com/Article/1020/difference-between-hashmap-and-hashtable-in-java 例えば、面接の質問のクイズに関連したJavaコ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top