【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 存储

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