HsahSet---无序,不可重复
package eight.set.hashset; import java.util.HashSet; import java.util.Iterator; public class Demo01 { public static void main(String[] args) { //为什么之前重复的字符串没有存进HashSet集合中? //String类本身已经重写HashCode()方法和equals() HashSet<String> hs = new HashSet<String>(); hs.add("车次:G4172"); hs.add("出发站:青岛"); hs.add("到达站:北京南"); hs.add("历时时间:4:53"); hs.add("车票:6车厢3FB"); hs.add("车票:6车厢3FB");//不能重复 //HashSet没有下标不能用for循环 //foreach for (String string:hs){ System.out.println(string); } //迭代器 Iterator<String> it = hs.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
package eight.set.hashset; 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 String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } //重写equals() 用于在两个元素位置相同的时候比较两个元素是否相等 @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); } //重写hashCode() 用于获得元素的存储位置 @Override public int hashCode() { return Objects.hash(name, age); } }
package eight.set.hashset; import java.util.HashMap; import java.util.HashSet; public class Test { public static void main(String[] args) { //Student类重写HashCode方法和equals方法后不能重复存储 Student s1 = new Student("龙龙",25);//先计算哈希码值,如哈希码值相等则调用equals方法看属性是否相等 Student s2 = new Student("壮壮",22); Student s3 = new Student("成成",27); Student s4 = new Student("成成",27); HashSet<Student> hs = new HashSet<>(); hs.add(s1); hs.add(s2); hs.add(s3); hs.add(s4); for (Student student:hs){ System.out.println(student); } } }标签:Set,name,HashSet,hs,age,add,Student,集合,public From: https://blog.csdn.net/Anyway_01/article/details/136717421