stream流对List<Map<String,String>>某个字段去重
时间: 2023-10-29 12:09:21 浏览: 140
你好,关于你的问题,可以使用Java 8中的stream流的distinct()方法对List<Map<String,String>>某个字段进行去重。具体代码演示可以参考以下示例:
```
List<Map<String,String>> list = new ArrayList<>();
list.add(new HashMap<String,String>(){{put("id","1"); put("name","John");}});
list.add(new HashMap<String,String>(){{put("id","2"); put("name","Peter");}});
list.add(new HashMap<String,String>(){{put("id","3"); put("name","John");}});
list.add(new HashMap<String,String>(){{put("id","4"); put("name","Mary");}});
List<Map<String,String>> distinctList = list.stream().filter(
distinctByKey(map -> map.get("name"))
).collect(Collectors.toList());
System.out.println(distinctList);
// Output: [{id=1, name=John}, {id=2, name=Peter}, {id=4, name=Mary}]
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
```
希望能帮到你,如果你有其他问题可以继续提出。
阅读全文
相关推荐


















