ホームページ  >  記事  >  Java  >  JavaのHashMapとHashtableの違いは何ですか

JavaのHashMapとHashtableの違いは何ですか

青灯夜游
青灯夜游オリジナル
2019-03-21 14:46:494385ブラウズ

HashMap クラスと Hashtable クラスはどちらも java.util.map インターフェースを実装していますが、その動作メソッドと使用法には違いがあります。 HashMapとHashtableの違いについては以下の記事で解説していますので、皆様のお役に立てれば幸いです。

JavaのHashMapとHashtableの違いは何ですか

java での HashMap と Hashtable の例

まずは、例を通して HashMap と Hashtable を見てみましょうハッシュテーブルとの違い。

HashMap と Hashtable は、キーと値のペアをハッシュ テーブルに保存します。 Hashtable または HashMap を使用する場合、キーとして使用するオブジェクトと、そのキーにリンクされる値を指定します。次に、キーがハッシュ化され、結果のハッシュ (ハッシュ) コードがテーブルに格納されている値へのインデックスとして使用されます。

java コード:

import java.util.*; 
import java.lang.*; 
import java.io.*; 
  
/* 只有当类是公共的时,类的名称才必须是“main” */
class Ideone 
{ 
    public static void main(String args[]) 
    { 
        //----------hashtable ------------------------- 
        Hashtable<Integer,String> ht=new Hashtable<Integer,String>(); 
        ht.put(100,"Amit"); 
        ht.put(104,"Amit");  
        ht.put(101,"Vijay"); 
        ht.put(102,"Rahul"); 
        System.out.println("-------------Hash table--------------"); 
        for (Map.Entry m:ht.entrySet()) { 
            System.out.println(m.getKey()+" "+m.getValue()); 
        } 
  
        //----------------hashmap-------------------------------- 
        HashMap<Integer,String> hm=new HashMap<Integer,String>(); 
        hm.put(100,"Amit"); 
        hm.put(104,"Amit");  // hashmap 允许重复值
        hm.put(101,"Vijay"); 
        hm.put(102,"Rahul"); 
        System.out.println("-----------Hash map-----------"); 
        for (Map.Entry m:hm.entrySet()) { 
            System.out.println(m.getKey()+" "+m.getValue()); 
        } 
    } 
}

出力:

JavaのHashMapとHashtableの違いは何ですか

HashMap と Hashtable の間違い

##1. HashMap は非同期であり、スレッドセーフではありません。正しい同期コードがない場合、複数のスレッド間で共有することはできません。一方、Hashtable は同期であり、スレッドセーフです。多くのスレッドで共有できます。

注: スレッド同期が必要ない場合は、通常、HashTable よりも HashMap の方が優れています。

2. HashMap では 1 つの null キーと複数の null 値が許可されますが、Hashtable では null キーまたは null 値が許可されません。

3. Hashmap は挿入順序を維持するために linkedhashmap を実装し、treemap はキーの昇順に従ってマッピングを並べ替えます。また、ハッシュテーブルはいかなる種類の順序付けも保証せず、マッピングを特定の順序で維持することもありません。

4. HashMap は AbstractMap クラスを継承し、HashTable は Dictionary クラスを継承します。

5. Hashtable のデフォルトの初期容量は 11 で、拡張するたびに元の 2n 1 になりますが、HashMap のデフォルトの初期容量は 16 で、拡張するたびに、容量は純正の2倍になります。

6. ハッシュ値を計算するさまざまな方法

7. HashMap のイテレータはフェイルファスト メカニズムですが、Hashtable のイテレータはフェイルファスト メカニズムではありません。

おすすめのビデオチュートリアル: 「

Java チュートリアル

以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がJavaのHashMapとHashtableの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。