【Java 集合】集合框架之 Set

24 篇文章 11 订阅 ¥9.90 ¥99.00
本文详细介绍了Java集合中的Set接口及其三种主要实现类:HashSet、TreeSet和LinkedHashSet。HashSet依赖于对象的hashCode和equals方法来确保唯一性,采用哈希表存储元素。TreeSet基于二叉树原理,自动排序。LinkedHashSet结合了HashSet和LinkedHashMap,保持插入顺序。了解这些实现类的工作原理有助于更好地选择和使用Java集合。
摘要由CSDN通过智能技术生成

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++ 实现的。

看一下它们之间的关系: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值