java 8 根据map 字段值 去重

        List<Map<String, Object>> msgId = list1.stream().filter(distinctByKey(deviceRecord -> deviceRecord.get("msgId"))).collect(Collectors.toList());
 public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }

 

您可以使用Java中的Stream API和Collectors工具类来根据某个字段Map进行去重操作。下面是一个示例代码: ```java import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Person> personList = new ArrayList<>(); personList.add(new Person("John", 25)); personList.add(new Person("Jane", 30)); personList.add(new Person("John", 35)); personList.add(new Person("Jane", 40)); Map<String, Person> uniqueMap = personList.stream() .collect(Collectors.toMap(Person::getName, p -> p, (p1, p2) -> p1)); System.out.println(uniqueMap); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` 在上面的示例中,我们有一个Person类,它有一个name字段和age字段。我们创建了一个包含了重复元素的personList列表。然后,我们使用Stream API的`toMap()`方法来将列表转换为Map,其中name字段作为键,Person对象作为。在这个过程中,我们还传递了一个合并函数`(p1, p2) -> p1`,以确保当键冲突时只保留一个。最后,我们打印出了去重后的Map。 输出结果为: ``` {Jane=Person{name='Jane', age=30}, John=Person{name='John', age=25}} ``` 这样,您就可以根据某个字段Map进行去重了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值