java把Map中key前缀相同的作为新map的key,value是前缀相同对应的对象集合
时间: 2024-03-26 10:39:29 浏览: 62
你的问题是关于Java中Map的操作,要求将Map中key前缀相同的作为新Map的key,value是前缀相同对应的对象集合。可以通过以下代码实现:
```java
public static Map<String, List<Object>> groupByPrefix(Map<String, Object> map) {
Map<String, List<Object>> result = new HashMap<>();
for(String key : map.keySet()) {
// 获取key的前缀
String prefix = key.substring(0, key.indexOf("_"));
// 如果result中不存在以prefix为key的条目,则创建一个空的List
result.putIfAbsent(prefix, new ArrayList<>());
// 将当前key对应的value添加到以prefix为key的List中
result.get(prefix).add(map.get(key));
}
return result;
}
```
假设有一个Map<String, Object>对象,其中包含以下条目:
```java
Map<String, Object> map = new HashMap<>();
map.put("name_1", "张三");
map.put("name_2", "李四");
map.put("age_1", 20);
map.put("age_2", 25);
map.put("gender_1", "男");
```
调用以上代码后,会返回以下Map对象:
```java
{
"name": ["张三", "李四"],
"age": [20, 25],
"gender": ["男"]
}
```
其中,以"_"作为分隔符,取出每个key的前缀,将相同前缀的value放到一个List中,作为新Map的value。
阅读全文