以下是一个示例代码,展示如何按照Map的值进行分组:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapValueGrouping {
public static void main(String[] args) {
// 创建一个带有重复值的Map
Map map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 1);
map.put("D", 3);
map.put("E", 2);
// 创建一个用于存储分组结果的Map
Map> groupedMap = new HashMap<>();
// 遍历原始Map
for (Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
// 如果分组Map中已经包含该值,则将键添加到对应的列表中
if (groupedMap.containsKey(value)) {
groupedMap.get(value).add(key);
}
// 否则,创建一个新的列表,并将键添加到该列表中
else {
List list = new ArrayList<>();
list.add(key);
groupedMap.put(value, list);
}
}
// 输出分组结果
for (Map.Entry> entry : groupedMap.entrySet()) {
Integer value = entry.getKey();
List keys = entry.getValue();
System.out.println("Group " + value + ": " + keys);
}
}
}
此示例中,首先创建了一个带有重复值的Map,然后创建了一个用于存储分组结果的Map。接下来,我们遍历原始Map,对于每个键值对,首先检查分组Map中是否已经包含该值,如果是,则将键添加到对应的列表中;否则,创建一个新的列表,并将键添加到该列表中。最后,我们遍历分组Map,并输出每个分组的键列表。