集合Set存储的元素必须唯一,即Set集合不能存储重复的元素,请问Set集合如何判断元素是重复的?假如我们需要使用一个Set集合用来存储学生类型对象,凡学生学号相同的就认为是同一学生,请你根据该需要提出解决方案。
时间: 2024-02-18 18:03:36 浏览: 10
Set集合判断元素是否重复是通过对象的equals()和hashCode()方法来判断的。当两个对象的equals()方法返回true且hashCode()方法返回的哈希值相等时,Set集合就认为它们是重复元素,不会将后面的元素添加进去。
针对题目中的需求,我们可以重写学生类型的equals()和hashCode()方法,使其只要学号相同就认为是同一学生,示例代码如下:
```java
public class Student {
private String id; // 学号
private String name; // 姓名
// 构造方法和其他方法省略
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Student)) {
return false;
}
Student other = (Student) obj;
// 只要学号相同就认为是同一学生
return id.equals(other.id);
}
@Override
public int hashCode() {
// 只要学号相同就返回相同的哈希值
return id.hashCode();
}
}
```
这样,当我们向Set集合中添加两个学号相同的学生对象时,Set集合就会认为它们是同一元素,只会将其中一个添加进去。