From 9f74cb1caee25859faf261be4195e751d99308a3 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sun, 2 Aug 2026 11:53:48 +0800 Subject: [PATCH] =?UTF-8?q?s-day02-HashSet=E5=AD=98=E5=82=A8=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/inmind/set02/HashSetTest10.java | 26 +++++++++++++++++++ .../src/com/inmind/set02/HashTableDemo09.java | 8 +++--- s-day03/src/com/inmind/set02/Student.java | 8 ++++++ 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 s-day03/src/com/inmind/set02/HashSetTest10.java diff --git a/s-day03/src/com/inmind/set02/HashSetTest10.java b/s-day03/src/com/inmind/set02/HashSetTest10.java new file mode 100644 index 0000000..4adf863 --- /dev/null +++ b/s-day03/src/com/inmind/set02/HashSetTest10.java @@ -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 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); + } +} diff --git a/s-day03/src/com/inmind/set02/HashTableDemo09.java b/s-day03/src/com/inmind/set02/HashTableDemo09.java index 113dee6..d761b4c 100644 --- a/s-day03/src/com/inmind/set02/HashTableDemo09.java +++ b/s-day03/src/com/inmind/set02/HashTableDemo09.java @@ -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 sets = new HashSet<>(); diff --git a/s-day03/src/com/inmind/set02/Student.java b/s-day03/src/com/inmind/set02/Student.java index 75fd506..89a3279 100644 --- a/s-day03/src/com/inmind/set02/Student.java +++ b/s-day03/src/com/inmind/set02/Student.java @@ -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 + + '}'; + } }