List<Map<String,String>> 去重
时间: 2024-09-12 15:06:32 浏览: 62
List<Map<String, String>> 是一个包含多个键值对(String 对 String)的地图(Map)的列表,要去重通常是基于某个或某些键(Key)的值。由于每个map都是独立的,并非基于某种特定顺序或关联关系,所以直接去重可能会有些复杂。这里有几个常见的方法:
1. 使用Set:如果允许丢失部分信息,可以直接将整个map转换成set(Set不存储重复元素),然后再转回list。例如:
```java
Set<Map<String, String>> distinctMaps = new HashSet<>(list);
List<Map<String, String>> uniqueList = new ArrayList<>(distinctMaps);
```
但这只会保留第一个匹配项的map,其他具有相同键值对的map都会被丢弃。
2. 自定义比较:如果需要保留完整的map并基于某个键的值判断是否重复,可以自定义比较规则,如使用HashMap,因为它的键值对是基于哈希值存取的,理论上不会有重复键值对:
```java
Map<String, Map<String, String>> mapSet = new HashMap<>();
for (Map<String, String> map : list) {
mapSet.putIfAbsent(map.get("uniqueKey"), map);
}
List<Map<String, String>> uniqueList = new ArrayList<>(mapSet.values());
```
这里假设"uniqueKey"是你希望作为唯一标识的键。
阅读全文