2
A
回答
4
的方式之一,是讓你的地圖是這樣定義的:
Map<String,List<String>> multiValueMap = new HashMap();
或者,如果你不想重新發明輪子,然後使用Apache MultiMap
1
您將不得不改變數據結構來以這種方式存儲數據。使用HashMap
的ArrayList
或Set
(根據您的需要)來執行此操作。
例
HashMap<Character, Integer> map = new HashMap<>();
map.put('A', 2);
map.put('B', 1);
map.put('c', 2);
// SORTED
HashMap<Integer, List<Character>> sortedMap = new HashMap<>();
ArrayList<Character> list = new ArrayList<>();
for(Map.Entry<Character, Integer> entry : map.entrySet()){
list = sortedMap.get(entry.getValue());
if(list == null){
list = new ArrayList<>();
entry.put(entry.getValue(), list);
}
list.add(entry.getKey());
}
-1
你剛纔創建HaspMap
象下面這樣:
Map<Integer, List<String>> map1 = new HashMap<>();
ArrayList<String> al = new ArrayList<>();
al.add("B");
map1.put(1, al);
al = new ArrayList<>();
al.add("A");
al.add("C");
map1.put(2, al);
+0
這不會轉換OP已經擁有的'HashMap',並且將單值和'String'數組列表混合,因爲Object不是非常類型安全的, – Andreas
0
HashMap的逆轉
HashMap<String,Integer> aHM = new HashMap<String,Integer>();
HashMap<Integer,ArrayList<String>> aHMrev = new HashMap<Integer,ArrayList<String>>();
//HashMap Reversal
for (String f : aHM.keySet()){
if(aHMrev.get(aHM.get(f)) != null){
ArrayList<String> al = aHMrev.get(aHM.get(f));
al.add(f);
aHMrev.put(aHM.get(f), al);
}
else{
ArrayList<String> al = new ArrayList<String>();
al.add(f);
aHMrev.put(aHM.get(f), al);
}
}
例
aHM = [LMWEB1B-VMH.log=Group1,PLMWEB1E-VMH.csv=Group3,
LMWEB1A-VMH.log=Group1,
LMWEB1E-VMH.log=Group2,
PLMWEB1D-VMH.csv=Group3,
LMWEB1F-VMH.log=Group2,
PLMWEB1C-VMH.csv=Group3,
PLMWEB1A-VMH.csv=Group2,
PLMWEB1B-VMH.csv=Group3,
PLMDB1-VMH.csv=Group2,
LMWEB1D-VMH.log=Group1,
PLMWEB1F-VMH.csv=Group3,
LMWEB1C-VMH.log=Group1]
aHMrev = {
Group1=[LMWEB1B-VMH.log, LMWEB1A-VMH.log, LMWEB1D-VMH.log,LMWEB1C-VMH.log],
Group2=[LMWEB1E-VMH.log, LMWEB1F-VMH.log,PLMWEB1A-VMH.csv,PLMDB1-VMH.csv],
Group3=[D:\Trash\Logs\Perfmon\PLMWEB1E-VMH.csv,PLMWEB1D-VMH.csv,PLMWEB1C-VMH.csv,PLMWEB1B-VMH.csv,PLMWEB1F-VMH.csv]}
相關問題
- 1. 如何根據鍵值合併R中的兩個列表
- 2. 如何遍歷Hashmap,打印鍵/值並刪除Rust中的值?
- 3. 根據值合併列
- 4. 如何根據其鍵值生成數組值的組合
- 5. 如何根據鍵值映射中兩個不同鍵的條件組合值?
- 6. 根據HashMap中的值字段
- 7. 如何更新HashMap中的鍵值?
- 8. 如何根據以前的值更新Java HashMap值
- 9. HashMap鍵和值
- 10. awk根據鍵值匹配併合並兩個文件
- 11. HashMap中的鍵 - 值映射
- 12. 如何根據重複值合併數組值?
- 13. 如何根據mysql中的最高值合併輸出
- 14. awk - 合併數據並根據匹配值賦值
- 15. 根據值顯示hashmap的入口集
- 16. 分割字符串並通過HashMap中的鍵值檢索值
- 17. 如何反轉HashMap的鍵和值?
- 18. HashMap - 更改鍵值
- 19. R:數據框 - 如何合併值併合並重復值?
- 20. 如何根據ID和組相同的鍵值對合並兩個對象
- 21. 如何根據一個鍵的值合併所有重複數組?
- 22. 如何獲取該HashMap中值的相應鍵值
- 23. 如何從HashMap中獲取鍵值對的值?
- 24. 如何根據散列中的鍵/值在Redis中查找並添加鍵/值數據到散列?
- 25. 如何根據公共值合併數據庫行?
- 26. 根據字段值合併文檔?
- 27. PHP Array根據值合併和區分
- 28. 如何通過鍵合併字典值?
- 29. 如何根據詞典中的鍵拉取鍵值?
- 30. Freemarker和hashmap。如何獲得鍵值
或者使用Guava Multimap等於Apache,只是另一個庫。 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html –