37 lines
1.1 KiB
Java
37 lines
1.1 KiB
Java
package com.inmind.set02;
|
|
|
|
import java.util.HashSet;
|
|
|
|
/*
|
|
哈希表以及HashSet中去重复的原理
|
|
|
|
Set集合底层的数据结构是哈希表
|
|
|
|
哈希表:在JDK8之前,就是数组+链表
|
|
哈希表:在JDK8之后,就是数组+链表+红黑树
|
|
*/
|
|
public class HashTableDemo09 {
|
|
public static void main(String[] args) {
|
|
String str1 = "abc";
|
|
String str2 = new String("abc");
|
|
String str3 = "通话";
|
|
String str4 = "重地";
|
|
//查看他们各自的哈希值
|
|
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<>();
|
|
sets.add(str1);
|
|
sets.add(str2);
|
|
//更换了通话和重地的添加顺序后,改变了sets集合的内容展示顺序,为什么呢??哈希表数据结构导致的
|
|
sets.add(str4);
|
|
sets.add(str3);
|
|
System.out.println(sets);
|
|
|
|
|
|
}
|
|
}
|