数组里面是对象 怎么去重
时间: 2023-12-09 12:32:29 浏览: 66
可以使用 Set 数据结构来去重,但是需要注意的是,Set 默认只能去重基本数据类型,对于对象类型需要自定义去重规则。可以通过重写对象的 equals 和 hashCode 方法来实现自定义去重规则。
例如,假设有一个对象数组 arr,其中每个对象都有一个属性 name,我们希望按照 name 属性去重,可以按照以下步骤操作:
1. 定义一个新的类,例如 UniqueObject,包含一个属性 name,并重写 equals 和 hashCode 方法:
```
public class UniqueObject {
private String name;
public UniqueObject(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UniqueObject that = (UniqueObject) o;
return Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
```
2. 将原数组转换为 Set,并指定元素类型为 UniqueObject:
```
Set<UniqueObject> set = new HashSet<>(Arrays.asList(arr).stream().map(obj -> new UniqueObject(obj.getName())).collect(Collectors.toList()));
```
3. 将 Set 转换回数组:
```
UniqueObject[] uniqueArr = set.toArray(new UniqueObject[0]);
```
这样就可以按照对象的 name 属性去重了。
阅读全文