集合Set存储的元素必须唯一,即Set集合不能存储重复的元素,请问Set集合如何判断元素是重复的?假如我们需要使用一个Set集合用来存储学生类型对象,凡学生学号相同的就认为是同一学生,请你根据该需要提出解决方案。
时间: 2024-02-15 19:03:40 浏览: 45
JS判断数组里是否有重复元素的方法小结
5星 · 资源好评率100%
Set集合是通过元素的hashCode()和equals()方法来判断元素是否重复的。在使用Set集合存储自定义对象时,需要确保该对象的hashCode()和equals()方法已经被正确地重写,以保证Set集合能够正常地判断元素是否重复。
对于学生类型对象,可以在学生类中重写hashCode()和equals()方法,使学号相同的学生对象返回相同的hashCode值,并且在equals()方法中比较学号是否相同,从而判断学生对象是否重复。具体代码示例如下:
```java
public class Student {
private String id;
private String name;
// 构造函数、Getter和Setter方法等省略
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Student)) {
return false;
}
Student other = (Student) obj;
return id.equals(other.getId());
}
}
```
在使用Set集合存储学生对象时,只需要创建一个Set对象,然后将学生对象添加到Set集合中即可。Set集合会自动判断学生对象是否重复,并且仅会存储一份学号相同的学生对象。具体代码示例如下:
```java
Set<Student> set = new HashSet<>();
Student s1 = new Student("1", "张三");
Student s2 = new Student("2", "李四");
Student s3 = new Student("1", "王五"); // 学号与s1相同
set.add(s1);
set.add(s2);
set.add(s3); // 不会被添加到set中,因为学号与s1相同
System.out.println(set); // [Student{id='1', name='张三'}, Student{id='2', name='李四'}]
```
阅读全文