From 2aa143cca15b6c74b7611aa946c6693b37ae8f43 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sun, 1 Feb 2026 11:28:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E9=98=B6day03-=E5=93=88=E5=B8=8C?= =?UTF-8?q?=E8=A1=A8=E4=BB=A5=E5=8F=8AHashSet=E4=B8=AD=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=9A=84=E5=8E=9F=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/inmind/set02/HashDemo09.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 javaSE-day03/src/com/inmind/set02/HashDemo09.java diff --git a/javaSE-day03/src/com/inmind/set02/HashDemo09.java b/javaSE-day03/src/com/inmind/set02/HashDemo09.java new file mode 100644 index 0000000..3818883 --- /dev/null +++ b/javaSE-day03/src/com/inmind/set02/HashDemo09.java @@ -0,0 +1,39 @@ +package com.inmind.set02; + +import java.util.HashSet; + +/* +哈希表以及HashSet中去重复的原理 + + Set集合底层的数据结构是哈希表 + + 哈希表:在JDK8之前,就是数组+链表 + 哈希表:在JDK8之后,就是数组+链表+红黑树 + +总结:哈希表通过对象的hashCode和equals方法来实现去重功能的,它能够在实现去重的基础上,还能保证高效查询操作 + +如何保证高效,假设有1万条数据,遍历是否包含某个数据,由hashCode值,就排除了8000条数据,只要查询2000条 + */ +public class HashDemo09 { + public static void main(String[] args) { + String s1 = "abc"; + String s2 = new String("abc"); + String s3 = "通话"; + String s4 = "重地"; + + //s1与s2,地址不同,但是内容相同,哈希值也相同,由于String重写了hashCode方法,哈希值跟内容有关 + System.out.println(s1.hashCode()); + System.out.println(s2.hashCode()); + + //s3与s4,地址不同,内容也不相同,哈希值相同,由于String重写了hashCode方法,哈希值跟内容有关 + System.out.println(s3.hashCode()); + System.out.println(s4.hashCode()); + + HashSet sets = new HashSet<>(); + sets.add(s1); + sets.add(s2); + sets.add(s4); + sets.add(s3); + System.out.println(sets); + } +}