To group all keys with the same values in a HashMap in Java, you can iterate through the map and use a Map to store the keys with the same value.
Here's an example of how you can do this:
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 1);
map.put("Bob", 2);
map.put("Charlie", 3);
map.put("Dave", 1);
map.put("Eve", 2);
Map<Integer, List<String>> grouped = new HashMap<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
int value = entry.getValue();
String key = entry.getKey();
grouped.putIfAbsent(value, new ArrayList<>());
grouped.get(value).add(key);
}
System.out.println(grouped);
This code will create a Map called grouped that contains the keys from the original map grouped by their values. The output will be:
{1=[Alice, Dave], 2=[Bob, Eve], 3=[Charlie]}
Note that this example uses the putIfAbsent() method and the get() method from the Map interface to add keys to the grouped map and retrieve the list of keys for a given value. These methods are available in Java 8 and later. If you are using an earlier version of Java, you can use the containsKey() method to check if a key is present in the map before adding it.