I’ve got an existing instance of HashMap simply called sale (it is Map<String, Set<String>>)
I use it to log customers and items history.
Is there a way to create a new instance of HashMap, that effectively reverses this usage? i.e will show each item purchased as a unique key and the corresponding value as a String set of the customers that have purchased that product. I suspect there is a simple process using keySet() in some way to iterate over the sales map but I just can’t see how to do this.
Any help would be much appreciated.
do you mean you want some thing like Map, String> !!
Thn you can iterate over existing map and put reversed key values in a new map
Example:
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);
}
I think it would be more of something like that:
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);
}
}