set集合根据属性去重
时间: 2023-07-20 18:44:35 浏览: 91
js数组中存对象,根据对象的属性进行去重
可以通过实现一个自定义的比较器来根据对象的属性去重Set集合。具体地说,你可以先定义一个类来表示集合中的元素,然后在该类中重写equals和hashCode方法。在equals方法中,你可以根据需要比较对象的属性来确定它们是否相等。在hashCode方法中,你需要根据对象的属性来计算哈希码,以确保相等的对象具有相同的哈希码。最后,你可以创建一个Set集合,并将自定义的比较器传递给它的构造函数,以使集合中的元素根据属性去重。例如,在Java中,你可以这样实现:
```java
public class Person {
private String name;
private int age;
// constructor, getters and setters
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Person)) {
return false;
}
Person p = (Person) o;
return Objects.equals(name, p.name) && age == p.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
// usage
Set<Person> people = new HashSet<>(new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
});
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Alice", 25)); // not added, already in the set
```
阅读全文