我有一个现有的HashMap实例,简称为sale (it is Map<String, Set<String>>)
我用它来记录客户和项目历史记录。
有没有办法创建HashMap的新实例,有效地逆转了这种用法?即将显示作为唯一键购买的每个项目,并将相应的值显示为已购买该产品的客户的字符串集。我怀疑有一个简单的过程使用keySet()以某种方式迭代销售地图,但我只是看不到如何做到这一点。 任何帮助将不胜感激。
答案 0 :(得分:2)
我认为更像是这样的事情:
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);
}
}
答案 1 :(得分:0)
你的意思是你想要一些像Map,String&gt; !!
您可以迭代现有地图并将反转的键值放入新地图
示例:
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);
}