Hashtable<Integer,String> ht = new Hashtable<Integer,String>();
ht.put(1,"student1");
ht.put(1,"student2");
如何迭代“单个密钥”的所有值?
key:1
values: student1, student2
答案 0 :(得分:5)
Hashtable不会为单个密钥存储多个值。
当您编写ht.put(1,“student2”)时,它会覆盖“1”的值并且不再可用。
答案 1 :(得分:5)
您需要使用:
Hashtable<Integer, List<String>> ht = new Hashtable<Integer, List<String>>();
并为关联的List
中的特定键添加新的String值。
话虽如此,您应该使用HashMap
代替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"));
}
如果您可以使用第三方库,则另一个选择是使用Guava's Multimap
。
Multimap<Integer, String> myMultimap = ArrayListMultimap.create();
myMultimap.put(1,"student1");
myMultimap.put(1,"student2");
Collection<String> values = myMultimap.get(1);
答案 2 :(得分:1)
Hashtable不允许键的多个值。当您向键添加第二个值时,您将替换原始值。
答案 3 :(得分:1)
如果您想要单个键的多个值,请考虑使用阵列列表的HashTable。