java listmap去重
时间: 2023-09-23 11:07:44 浏览: 50
可以使用Java 8的Stream API来实现List中Map去重,具体实现如下:
首先,我们可以使用distinct()方法去除重复元素,但是由于Map是一个对象,无法直接比较,因此我们需要对Map进行转换,将其转换为一个字符串。可以使用Map的toString()方法来实现转换。
然后,我们可以使用map()方法将List中的每个Map转换为字符串,最后再使用distinct()方法去重即可。
示例代码如下:
```java
List<Map<String, Object>> list = new ArrayList<>();
// 添加元素到list中
List<Map<String, Object>> distinctList = list.stream()
.map(map -> map.toString())
.distinct()
.map(str -> {
Map<String, Object> map = new HashMap<>();
String[] arr = str.substring(1, str.length() - 1).split(", ");
for (String s : arr) {
String[] kv = s.split("=");
map.put(kv[0], kv[1]);
}
return map;
})
.collect(Collectors.toList());
```
上述代码中,首先通过map()方法将List中的每个Map转换为字符串,然后使用distinct()方法去重。接下来,我们再使用map()方法将每个字符串转换为Map对象,最后使用collect()方法收集结果。
需要注意的是,Map转换为字符串的过程中,需要去掉大括号,否则会影响转换为Map对象的过程。