java中如何用hashset将对象数组去重
时间: 2023-07-18 12:19:07 浏览: 44
可以通过重写对象的hashCode()和equals()方法来实现HashSet对对象数组的去重。
首先,在对象的类中重写hashCode()和equals()方法,保证相同的对象具有相同的hashCode值和equals返回值。
例如,假设我们有一个Person类,可以按照以下方式重写hashCode()和equals()方法:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@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);
}
}
```
然后,可以使用HashSet来存储Person对象的数组,并利用HashSet自身的去重特性来去重。
示例代码如下:
```java
Person[] people = new Person[5];
people[0] = new Person("Tom", 18);
people[1] = new Person("Jerry", 19);
people[2] = new Person("Tom", 18);
people[3] = new Person("Mike", 20);
people[4] = new Person("Jerry", 19);
Set<Person> set = new HashSet<>(Arrays.asList(people));
Person[] result = set.toArray(new Person[0]);
```
在上面的示例代码中,将Person对象数组转换成List后,再利用HashSet的构造函数将List转换成Set,这样就可以自动去重,并将去重后的结果转换成Person对象的数组返回。
阅读全文