次のコードは、同じ挿入順序で出力を提供します。 javadocを読みましたが、挿入順序についても話していませんでした。誰かが私が正しい情報を得るのを手伝ってくれますか?.
import Java.util.*;
public class hash {
public static void main(String[] args) {
String str[] = { "japan",
"usa",
"japan",
"russia",
"usa",
"japan",
"japan",
"australia"};
int len = 8;
Hashtable ht = new Hashtable();
int i = 0;
while (i < len) {
String c = str[i];
System.out.println("c :" + c);
Integer intg = (Integer) ht.get(c);
if (intg == null)
ht.put(c, new Integer(1));
else
ht.put(c, new Integer(intg.intValue() + 1));
i++;
}
Enumeration k = ht.keys();
while (k.hasMoreElements()) {
String key = (String) k.nextElement();
System.out.println(key + " > " + ht.get(key));
}
}
}
いいえ、違います。挿入順序を維持するには、代わりにJava.util.LinkedHashMap
( javadoc )を使用します。
また、HashMap
には不要な同時実行オーバーヘッドがあるため、Hashtable
はHashtable
より優先されるようになりました。 ( HashMapとHashtableの違い? を参照してください。)
いいえ、違います。 「ハッシュ」の順序のみを認識します。文字列を並べ替えると、ハッシュテーブルから同じ順序で表示されます。
Hashtable
は、順序を維持するためではなく、高速ルックアップに使用されます。 LinkedHashMap
またはその他のデータ構造を調べる必要があります。
LinkedHashMapは、要素の挿入順序を維持するために使用されます。
MapJavadocから。
マップの順序は、マップのコレクションビューのイテレータが要素を返す順序として定義されます。 TreeMapクラスなどの一部のマップ実装は、その順序に関して特定の保証を行います。 HashMapクラスのような他のものはそうではありません。
また、HashtableとHashMapのコードの内部を調べることは非常に便利です。