HashSet 是 哈希集合的意思

Set集合去重复案例:
重写HashCode和equals ( 这里要重写equals的原因:因为默认比较其对象地址,要重写,才能打印其内容)
package com.itheima.d1_set;import java.util.HashSet;import java.util.Set;/*** 目标: 让Set集合把重复内容的对象去掉一个(去重复)*/public class SetDemo3 {public static void main(String[] args) {// 创建哈希集合(HashSet)// Set集合去重复原因:先判断哈希值 再判断equalsSet<Student> sets = new HashSet<>();Student s1 = new Student("无恙",20,'男');Student s2 = new Student("无恙",20,'男');Student s3 = new Student("周雄",20,'男');sets.add(s1);sets.add(s2);sets.add(s3);// 直接输出存储Student类对象不会去重,因为每次创建的对象哈希值都不一样System.out.println(sets); //[Student{name='无恙', age=20, sex=男}, Student{name='周雄', age=20, sex=男}]// 重写了equals和HashCode方法,会去重复}}
package com.itheima.d1_set;import java.util.Objects;public class Student {private String name;private int age;private char sex;public Student() {}public Student(String name, int age, char sex) {this.name = name;this.age = age;this.sex = sex;}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;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}// 重写toString方法,可以直接打印内容@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", sex=" + sex +'}';}// 重写HashCode和equals// 右键一直next即可@Overridepublic 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 && sex == student.sex && Objects.equals(name, student.name);}@Overridepublic int hashCode() {// 保证入参一样,返回的哈希值一定是一样的return Objects.hash(name, age, sex);}}
