java map根据一个字段去重
时间: 2024-01-24 14:02:42 浏览: 103
Java中List根据map的某个key去重的代码
您可以使用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进行去重了。
阅读全文