有勇气的牛排博客

Set 集合 Hash集合存储学生对象并遍历

有勇气的牛排 1231 Java 2021-08-20 00:54:01

1 Hash集合存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储多个学生对象,使用程序实现在控制台遍历该集合

要求:学生对象的成员变量值相同,我们救人为是同一个对象

思路

1、定义学生类

2、创建HshSet集合对象

3、创建学生对象

4、把学生添加到集合

5、遍历集合(增强for)

6、在学生类中重写两个方法

(1)hashCode() 和 equals()

(2)自动生成即可

2 实现

2.1 方案一

Student.java

package HashSetDemo; public class Student { private String name; private int age; // 无参构造 public Student() { } // 带参构造 public Student(String name, int age) { this.name = name; this.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) { this.age = age; } }

HashSetDemo02.java

package HashSetDemo; import java.util.HashSet; public class HashSetDemo02 { public static void main(String[] args) { // 创建HashSet集合对象 HashSet<Student> hs = new HashSet<>(); // 创建学生对象 Student s1 = new Student("灰太狼", 20); Student s2 = new Student("懒洋洋", 21); Student s3 = new Student("导演", 22); Student s4 = new Student("导演", 23); // 把学生添加到集合 hs.add(s1); hs.add(s2); hs.add(s3); hs.add(s4); // 遍历集合(增强for) for (Student s : hs) { System.out.println(s.getName() + "," + s.getAge()); } } }

2.2 优化

Generate–> equals() and hashCode() 然后一直确定即可
Student.java

package HashSetDemo; import java.util.Objects; public class Student { private String name; private int age; // 无参构造 public Student() { } // 带参构造 public Student(String name, int age) { this.name = name; this.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) { this.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); } }

留言

专栏
文章
加入群聊