HashSet集合存储学生对象并遍历
- 需求:创建一个存储学生对象的集合,存储多个学生对象,使用程序控制台遍历该集合
- 要求:学生对象的成员变量值相同,我们就认为是同一个对象
- 思路:
- 定义学生类
- 创建学生对象
- 把学生添加集合里
- 在学生类中重写两个方法:HashSet要确保元素的唯一性,需要重写hashCode()和equal()方法
- 遍历集合(Iterator方法或者foreach)
图文和代码实现:
图:
Student
package CCom.Cnn;
import java.util.Objects;
public class Student {
//默认继承Object类,所以是可以重写父类方法的
private String name;
private int Age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
Age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Age == student.Age && Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, Age);
}
}
Demo
package CCom.Cnn;
import java.util.HashSet;
/*
HashSet集合存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储多个学生对象,使用程序控制台遍历该集合
要求:学生对象的成员变量值相同,我们就认为是同一个对象
思路:
定义学生类
创建学生对象
把学生添加集合里
遍历集合(Iterator方法或者foreach)
在学生类中重写两个方法:HashSet要确保元素的唯一性,需要重写hashCode()和equal()方法
*/
public class Demo {
public static void main(String[] args) {
//定义学生类,创建学生对象
Student s1 = new Student("菜徐琨",21);
Student s2 = new Student("美羊羊",22);
Student s3 = new Student("沸羊羊",22);
//建立HashSet集合
HashSet<Student> s = new HashSet<>();
//把学生添加集合里
s.add(s1);
s.add(s2);
s.add(s3);
//在学生类Student中重写hashCode()和equal()方法,来确保元素的唯一性
//使用foreach来循环遍历(Iterator也行),此时便利的元素不重复
for(Student x:s){
System.out.println(x.getName()+x.getAge());
}
}
}
输出的内容
美羊羊22
沸羊羊22
菜徐琨21