您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Java中,可以使用Set集合来实现自定义对象的去重。为了实现这一目标,您需要重写自定义对象的equals()
和hashCode()
方法。这是因为Set集合依赖于这两个方法来判断对象是否相等以及将对象存储在集合中。
以下是一个简单的示例,说明如何使用自定义对象实现Set集合的去重:
Person
,并实现equals()
和hashCode()
方法:public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
// 重写hashCode方法
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Person> personSet = new HashSet<>();
Person person1 = new Person("Alice", 30);
Person person2 = new Person("Bob", 25);
Person person3 = new Person("Alice", 30);
personSet.add(person1);
personSet.add(person2);
personSet.add(person3);
System.out.println("Person set size: " + personSet.size()); // 输出:Person set size: 2
}
}
在这个示例中,我们创建了一个Person
类,并重写了equals()
和hashCode()
方法。然后,我们使用一个HashSet来存储Person
对象。由于我们已经重写了equals()
和hashCode()
方法,所以Set集合会自动处理对象的去重。最后,我们可以看到,尽管我们向集合中添加了三个具有相同姓名和年龄的对象,但集合的大小仅为2。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。