几个Map集合,合成一个Map集合,要求去重,去重留下某个字段值最小的
时间: 2023-07-08 11:55:16 浏览: 105
可以通过以下方式实现:
1. 创建一个新的空的Map集合,作为合并后的结果。
2. 遍历所有的Map集合,对于每个Map集合中的每个键值对,判断是否已经存在于新的Map集合中。
3. 如果不存在,则直接将该键值对添加到新的Map集合中。
4. 如果已经存在,则比较该键值对中的特定字段值与新Map集合中对应键的值的特定字段值大小。
5. 如果该键值对中的特定字段值更小,则用该键值对的值替换新Map集合中对应键的值。
以下是一个Java示例代码:
```java
public static Map<String, Integer> mergeMaps(List<Map<String, Integer>> maps, String field) {
Map<String, Integer> result = new HashMap<>();
for (Map<String, Integer> map : maps) {
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
if (!result.containsKey(key)) {
result.put(key, value);
} else {
int oldValue = result.get(key);
if (value < oldValue || (value == oldValue && field != null && map.get(field) < result.get(field))) {
result.put(key, value);
}
}
}
}
return result;
}
```
该函数接受一个包含多个Map集合的List和一个字符串字段名作为参数,返回合并后的Map集合。在比较字段值时,如果传递了null作为字段名,则只比较键值对的值。
阅读全文