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 str3 = "通话";
|
||||||
String str4 = "重地";
|
String str4 = "重地";
|
||||||
//查看他们各自的哈希值
|
//查看他们各自的哈希值
|
||||||
System.out.println(str1.hashCode());
|
System.out.println(str1.hashCode());//96354
|
||||||
System.out.println(str2.hashCode());
|
System.out.println(str2.hashCode());//96354
|
||||||
System.out.println(str3.hashCode());
|
System.out.println(str3.hashCode());//1179395
|
||||||
System.out.println(str4.hashCode());
|
System.out.println(str4.hashCode());//1179395
|
||||||
|
|
||||||
//存入set集合
|
//存入set集合
|
||||||
HashSet<String> sets = new HashSet<>();
|
HashSet<String> sets = new HashSet<>();
|
||||||
|
|||||||
@@ -26,4 +26,12 @@ public class Student extends Object {
|
|||||||
result = 31 * result + age;
|
result = 31 * result + age;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Student{" +
|
||||||
|
"name='" + name + '\'' +
|
||||||
|
", age=" + age +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user