list集合中是对象怎么去重
时间: 2023-07-18 15:48:19 浏览: 93
如果List集合中是对象,我们需要重写对象的equals()方法和hashCode()方法来实现去重。equals()方法用来判断两个对象是否相同,而hashCode()方法用来计算对象的哈希码,以便在HashSet或HashMap等集合中进行快速查找和去重。
例如,假设我们有一个Person类,它有两个属性name和age,我们要对Person对象进行去重,可以在Person类中重写equals()和hashCode()方法,示例代码如下:
```java
public class Person {
private String name;
private int age;
// 构造方法和其他方法省略
@Override
public boolean equals(Object obj) {
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return Objects.equals(name, person.name) && age == person.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
上述代码中,equals()方法判断两个Person对象是否相同,如果name和age都相同,则认为两个对象相同;hashCode()方法根据name和age计算哈希码,确保相同的对象具有相同的哈希码。
然后我们可以使用HashSet来进行去重操作,示例代码如下:
```java
List<Person> personList = new ArrayList<>();
// 添加Person对象到List
...
Set<Person> personSet = new HashSet<>(personList);
// 去重后的结果保存在personSet中
```
上述代码中,将List转换成Set时,HashSet会自动调用Person类的equals()和hashCode()方法来进行去重。因为HashSet不保证元素的顺序,如果需要保留原始顺序,可以使用LinkedHashSet。
阅读全文