2
Hashtable<Integer,String> ht = new Hashtable<Integer,String>();
ht.put(1,"student1");
ht.put(1,"student2");

「単一のキー」のすべての値を反復処理するにはどうすればよいですか?

key:1 values: student1, student2

4

4 に答える 4

5

以下を使用する必要があります。

Hashtable<Integer, List<String>> ht = new Hashtable<Integer, List<String>>();

関連付けられた に特定のキーの新しい文字列値を追加しますList

そうは言っても、HashMap代わりにa を使用する必要がありHashtableます。後者はレガシークラスで、ずっと前に前者に置き換えられました。

Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();

次に、新しいエントリを挿入する前に、Map#containsKey()メソッドを使用してキーが既に存在するかどうかを確認します。キーが既に存在する場合は、対応するリストを取得し、それに新しい値を追加します。それ以外の場合は、新しいキーと値のペアを配置します。

if (map.containsKey(2)) {
    map.get(2).add("newValue");
} else {
    map.put(2, new ArrayList<String>(Arrays.asList("newValue")); 
}

別のオプションは、サードパーティのライブラリを使用できる場合、グアバのを使用することです。Multimap

Multimap<Integer, String> myMultimap = ArrayListMultimap.create();

myMultimap.put(1,"student1");
myMultimap.put(1,"student2");

Collection<String> values = myMultimap.get(1);
于 2013-08-18T17:49:00.373 に答える
5

Hashtable は、1 つのキーに対して複数の値を格納しません。

ht.put(1, "student2") と書くと、"1" の付いた値が上書きされて使えなくなります。

于 2013-08-18T17:46:45.133 に答える
1

1 つのキーに複数の値が必要な場合は、ArrayLists の HashTable の使用を検討してください。

于 2013-08-18T17:48:27.967 に答える
1

Hashtable では、キーに複数の値を使用できません。キーに 2 番目の値を追加すると、元の値が置き換えられます。

于 2013-08-18T17:47:01.383 に答える