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. HashMap鍵和值
- 6. 如何根據重複值合併數組值?
- 7. awk - 合併數據並根據匹配值賦值
- 8. 根據值顯示hashmap的入口集
- 9. 分割字符串並通過HashMap中的鍵值檢索值
- 10. R:數據框 - 如何合併值併合並重復值?
- 11. 如何根據ID和組相同的鍵值對合並兩個對象
- 12. 如何從HashMap中獲取鍵值對的值?
- 13. 如何獲取該HashMap中值的相應鍵值
- 14. 根據字段值合併文檔?
- 15. 合併包含HashMap保持值JAVA
- 16. 如何通過鍵合併字典值?
- 17. Freemarker和hashmap。如何獲得鍵值
- 18. 如何根據詞典中的鍵拉取鍵值?
- 19. 的Hashmap包含鍵值
- 20. 查找HashMap是否包含選定的值並返回鍵值
- 21. R,合併數據集更改鍵值
- 22. 根據mssql中的結果合併查詢以獲取不同的外鍵值
- 23. 如何檢索Clojure中列表中的HashMap中的鍵的值?
- 24. 根據設置的值合併數組值
- 25. 根據Pandas中的公共列值合併兩個數據幀
- 26. Hashmap - 鍵:字符串,值:布爾值。如何測試if語句中的值?
- 27. 如何根據值合併兩個多維數組?
- 28. 如何根據散列值合併兩個散列數組?
- 29. 如何更新HashMap中值
- 30. 如何檢索HashMap中值
或者使用Guava Multimap等於Apache,只是另一個庫。 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html –