【Java 集合】集合框架之 Set

Set 注重獨一無二的特性,該體系集合用於存儲無序(存入和取出的順序不一定相同)元素,值不能重複

對象的相等性本質是對象 hashCode 值(Java 是依據對象的內存地址計算出的次序號)判斷的,如果想要讓兩個不同的對象視爲相等的,就必須覆蓋 Object 的 hashCode 方法和 equals 方法

話外音:打開 Object.java 源碼,hashCode 長下面這樣。

public native int hashCode();

返回對象的內存地址經過處理後的結構,由於每個對象的內存地址都不一樣,所以哈希碼也不一樣。

它是一個本地方法,Java將調用本地方法庫對此方法的實現。由於Object類中有JNI方法調用,按照JNI的規則,應當生成JNI 的頭文件,在此目錄下執行javah -jni java.lang.Object 指令,將生成一個java_lang_Object.h頭文件,該頭文件是 C++ 實現的。

看一下它們之間的關係: 

話外音:圖中關係是 UML 類圖表示。

實線箭頭表示,繼承,從一個非接口類繼承。

虛線箭頭表示,實現實現一個接口。

1.HashSet(Hash 表)

哈希表邊存放的是哈希值。

HashSet 存儲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章