的新實例,我已經得到了HashMap的簡稱銷售(it is Map<String, Set<String>>)
的現有實例我用它來記錄客戶和項目的歷史。倒車鍵/值 - 創建的HashMap
有沒有一種方法來創建的HashMap的新實例,能夠有效逆轉這種用法?即將每件物品作爲一個唯一的鑰匙購買,並將相應的價值顯示爲購買該產品的顧客的字符串集合。我懷疑有一個簡單的過程使用keySet()以某種方式迭代銷售映射,但我無法看到如何執行此操作。 任何幫助將不勝感激。
的新實例,我已經得到了HashMap的簡稱銷售(it is Map<String, Set<String>>)
的現有實例我用它來記錄客戶和項目的歷史。倒車鍵/值 - 創建的HashMap
有沒有一種方法來創建的HashMap的新實例,能夠有效逆轉這種用法?即將每件物品作爲一個唯一的鑰匙購買,並將相應的價值顯示爲購買該產品的顧客的字符串集合。我懷疑有一個簡單的過程使用keySet()以某種方式迭代銷售映射,但我無法看到如何執行此操作。 任何幫助將不勝感激。
你的意思是你想要一些像Map,String>的東西!
THN你可以遍歷現有的地圖,在新地圖放顛倒鍵值
例子:
Map<Set<String>, String> somemap = new HashMap<Set<String>, String>();
foreach(Map.entry entry : existingMap.entrySet()) {
Set<String> value = entry.getValue();
String key = entry.getKey();
somemap.put(value,key);
}
我認爲這將是更多的類似的東西:
Map<String,Set<String>> result = new HashMap<String,Set<String>>();
for (Map.Entry<String,Set<String>> entry: salesMap.entrySet()) {
String cust = entry.getKey();
Set<String> items = entry.getValue();
for (String item: items) {
Set<String> customers = result.get(item);
if (customers == null) {
customers = new HashSet<String>();
result.put(item, customers);
}
customers.add(cust);
}
}
我認爲他也想「轉置」,每個Set條目成爲他們自己的關鍵字成客戶名稱的多圖。結果仍然應該是Map >。 –
Thilo
2010-03-19 07:50:13
或者可能不是,因爲他接受了你的答案;-) – Thilo 2010-03-19 07:53:37
好吧,如果這是正確的答案,那麼問題就寫錯了。這絕對不是「每件商品作爲唯一的鑰匙購買」 – 2010-03-19 08:27:46