java list 如何根据元素属性去重
时间: 2023-09-24 11:13:59 浏览: 88
可以使用Java 8的流操作和distinct()方法根据元素属性去重。以下是示例代码:
假设有一个Student类,其中包含id和name两个属性。
```
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
现在有一个List<Student>,需要根据学生的id属性去重,可以这样做:
```
List<Student> students = new ArrayList<>();
// 添加多个学生
...
List<Student> distinctStudents = students.stream()
.distinct()
.collect(Collectors.toList());
```
这里的distinct()方法会根据学生对象的equals()和hashCode()方法进行去重,因此需要在Student类中重写这两个方法:
```
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id;
}
@Override
public int hashCode() {
return id;
}
```
这样就可以根据学生id属性去重了。如果需要根据其他属性去重,只需要在equals()和hashCode()方法中比较相应的属性即可。
阅读全文