HashTableは、Mapの別の実装クラスです。このクラスは、キーを対応する値にマップするハッシュテーブルを実装します。null以外のオブジェクトは、キーまたは値として使用できます。つまり、nullオブジェクトを格納することは許可されていません(他のコレクションは許可されています)。
JDK1.0バージョンが存在し、最も初期の2列セットです。スレッドセーフは同期的です(シングルスレッド、低速)。
HashTable:最下層は、ハッシュテーブル、スレッドセーフコレクション、シングルスレッドコレクション、および低速です。
HashMap:最下層はハッシュテーブルであり、スレッドセーフでないコレクションとマルチスレッドコレクションであり、高速です。
HashMapコレクション(および以前に学習したすべてのコレクション):null値/キーを格納できます。
HashTableコレクションは、Vectorコレクションと同様に、JDK1.2バージョン以降のより高度なコレクションに置き換えられました。つまり、マルチスレッドが高速であるため、HashMapとArrayListです。
注:HashTableのサブクラスであるプロパティは引き続きアクティブに使用されます。
プロパティコレクションは、IOストリームと組み合わされた一意のコレクションです。
たとえば、2つの違い:
public static void main(String [] args){ HashMap <String、String> hashMap = new HashMap <>(); // HashMapはnull値とnullキーを 許可しますhashMap.put(null、 "a"); hashMap。 put( "b"、null); hashMap.put(null、null); //キーが複製され、値が System.out.println(hashMap); // {null = null、b = nullに置き換わることに注意してください} Hashtable <String、String> hashtable = new Hashtable <>(); //空のキーを格納することは許可されておらず、NullPointerExceptionが報告されます 。//hashtable.put(null、 "a"); System.out.println(ハッシュテーブル); }
例:文字列内の文字の出現回数をカウントします
コード:
public static void main(String [] args){ Scanner sc = new Scanner(System.in); //文字列を入力します System.out.println( "文字列を入力してください:"); String str = sc.next (); //文字列に 変換char [] charList = str.toCharArray(); // HashMapコレクションを作成する HashMap <Character、Integer> hashMap = new HashMap <>(); // (char c:charList)をトラバースする{ if(hashMap.get(c)!= null){//既存の hashMap.put(c、hashMap.get(c)+ 1); } else {//最初に hashMap.put(c、1);に保存 } } // HashMapをトラバースする2つの方法、1つはキーをセットに変換してからセットをトラバースする 。//2番目に、エントリオブジェクトを取り出し、エントリオブジェクトをトラバースします。 //両方ともここに実装されてコードの印象を深めます Set <Character> keySet = hashMap.keySet(); for(char c:keySet){//自動ボックス解除 System.out.println( "Character" + c + "発生回数は次のとおりです:" + hashMap.get(c )); } System.out.println( "--------------"); // 2つのHashMapの異なるトラバーサルメソッド。読者はそのうちの1つを選択できます Set <Map.Entry <Character、 Integer >> entryMap = hashMap.entrySet(); Iterator <Map.Entry <Character、Integer >> iterator = entryMap.iterator(); while(iterator.hasNext()){ Map.Entry <Character、Integer> entry = iterator .next(); System.out.println( "Character" + entry.getKey()+ "出現回数は次のとおりです:" + entry.getValue()); } }
スクリーンショットを実行します。