s-day02-HashSet存储自定义对象
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package com.inmind.set02;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
/*
|
||||
总结:哈希表通过对象的hashCode和equals方法来实现去重功能的,它能够在实现去重的基础上,还能保证高效查询操作
|
||||
如何保证高效,假设有1万条数据,遍历是否包含某个数据,由hashCode值,就排除了8000条数据,只要查询2000条
|
||||
|
||||
HashSet存储自定义对象
|
||||
注意:我们保存数据时,先判断哈希值,如果不一样直接存,如果哈希值相同,还会判断equals方法。
|
||||
总结:使用HashSet要实现自定义对象的去重,必须重写hashcode和equals,原因底层是哈希表
|
||||
*/
|
||||
public class HashSetTest10 {
|
||||
public static void main(String[] args) {
|
||||
//创建HashSet集合,保存学生对象
|
||||
HashSet<Student> students = new HashSet<>();
|
||||
|
||||
//去重功能,需要将同名同年龄的学生看作是同一个学生
|
||||
students.add(new Student("张三", 18));
|
||||
students.add(new Student("张三", 18));
|
||||
students.add(new Student("张三3", 18));
|
||||
students.add(new Student("张三4", 18));
|
||||
System.out.println(students.size());
|
||||
System.out.println(students);
|
||||
}
|
||||
}
|
||||
@@ -17,10 +17,10 @@ public class HashTableDemo09 {
|
||||
String str3 = "通话";
|
||||
String str4 = "重地";
|
||||
//查看他们各自的哈希值
|
||||
System.out.println(str1.hashCode());
|
||||
System.out.println(str2.hashCode());
|
||||
System.out.println(str3.hashCode());
|
||||
System.out.println(str4.hashCode());
|
||||
System.out.println(str1.hashCode());//96354
|
||||
System.out.println(str2.hashCode());//96354
|
||||
System.out.println(str3.hashCode());//1179395
|
||||
System.out.println(str4.hashCode());//1179395
|
||||
|
||||
//存入set集合
|
||||
HashSet<String> sets = new HashSet<>();
|
||||
|
||||
@@ -26,4 +26,12 @@ public class Student extends Object {
|
||||
result = 31 * result + age;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Student{" +
|
||||
"name='" + name + '\'' +
|
||||
", age=" + age +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user