【转】HashMap集合中key只能为引用数据类型,不能为基本类型
集合 类型 基本 不能 数据类型 Key 引用 HashMap
2023-09-11 14:15:22 时间
在HashMap中,为什么不能使用基本数据类型作为key?
其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序、无索引、不能存储重复元素。
存储元素采用的是hash表存储数据,每存储一个对象的时候,都会调用其hashCode()方法,算出其hash值,如果相同,则认为是相同的数据,直接不存储,如果hash值不同,则再调用其equals方法进行比较,如果返回true,则认为是相同的对象,不存储,如果返回false,则认为是不同的对象,可以存储到HashMap集合中。
之所以key不能为基本数据类型,是因为基本数据类型不能调用其hashCode()和equals()方法进行比较,所以HashMap集合的key只能为引用数据类型,不能为基本数据类型,可以使用基本数据类型的包装类,例如Integer Double等。
当然,在HashMap中存储自定义对象的时候,需要自己再自定义的对象中重写其hashCode()方法和equals()方法,才能保证其存储不重复的元素,否则将存储多个重复的对象,因为每new一次,其就创建一个对象,内存地址是不同的。
相关文章
- C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)
- Golang 实现 set 集合,变相实现 切片去重、排序 功能
- 15天玩转redis —— 第五篇 集合对象类型
- SQL SERVER 2008 Reporting Services 的一些小问题集合
- 15-spring学习-集合表达式
- mongodb删除集合后磁盘空间不释放
- Java集合源码分析(五)HashSet<E>
- TF版本升级问题集合:成功解决由于不同的TensorFlow版本之间某些函数的用法引起的错误
- TensorFlow从1.2到最新版本的CUDA和cuDNN所对应的版本集合。
- 2364. 统计坏数对的数目-数学推导转化+快速排序-搜索相同元素集合题解
- BZOJ 1015 JSOI2008 星球大战 starwar 并检查集合
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- bzoj2734【HNOI2012】集合选数
- C#高级编程五十八天----并行集合
- HDU 1232:流问题(并检查集合)
- python里使用正则表达式的集合字符
- 操作系统判断题集合(一)
- Go 集合类型 Slice切片
- 将 DataTable 类型转换成 List<T> 集合&Json类型