Hashtable<Integer,String> ht = new Hashtable<Integer,String>();
ht.put(1,"student1");
ht.put(1,"student2");
如何迭代「單個鍵」的所有值?遍歷哈希表中的所有鍵值java
key:1 values: student1, student2
Hashtable<Integer,String> ht = new Hashtable<Integer,String>();
ht.put(1,"student1");
ht.put(1,"student2");
如何迭代「單個鍵」的所有值?遍歷哈希表中的所有鍵值java
key:1 values: student1, student2
您需要使用:
Hashtable<Integer, List<String>> ht = new Hashtable<Integer, List<String>>();
,並在相關List
特定的鍵添加新的字符串值。
話雖如此,你應該使用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);
散列表不存儲用於單個鍵的多個值。
當您編寫ht.put(1,「student2」)時,它將覆蓋與「1」一起並且不再可用的值。
謝謝那麼我應該使用哪種數據結構? – Sara
Hashtable
散列表不允許某個鍵的多個值。當您向鍵添加第二個值時,您將替換原始值。
如果您希望爲單個密鑰創建多個值,請考慮使用ArrayList的HashTable。
非常感謝。什麼doea Arrays.asList(「newValue」)是什麼意思? – Sara
@sweet。它使用傳入該方法的值創建一個新的List。在'Arrays'類中查看該方法的文檔。 –