为什么hashmap中key是引用类型而不是基本数据类型?为什么有了基本数据类型还有包装类型?

wl889490 wl889490     2022-12-04     112

关键词:

 为什么HashMap中key是引用类型而不是基本数据类型?

最主要的原因是,hashmap中不能存储重复值,因此在存入值的时候,需要用到存储对象的hashcode()和equals()方法进行判断,而基本数据类型是没有这两个方法的。因此HashMap中key只能是引用类型。

 

包装类的作用:

 1. 包装类里面有一些很有用的方法和属性,如HashCode,ParseInt,equals;比如hashmap中就用到了
 2. 基本类型不能赋null值,某些场合需要;
 3. 很多地方不能直接用基本类型,比如集合,范型;
 4. 包装类的缓存提高了存取效率。

string不是基本数据类型

java中String是个对象,是引用类型基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数... 查看详情

为什么hashmap的加载因子一定是0.75?而不是0.8,0.6?(代码片段)

JDK8中的HashMap是用数组+链表+红黑树实现的,我们要想往HashMap中放数据或者取数据,就需要确定数据在数组中的下标。先把数据的键进行一次hash:staticfinalinthash(Objectkey)inth;return(key==null)?0:(h=key.hashCode())^... 查看详情

int和integer的区别。用法

...teger是包装类,也就是类。Integer是比int更高级的数据类型为什么java中使用int而不像vb中那样使用Integerint是面向机器底层的数值类型,是Primitive类型的数据类型,而Integer是int的Warpper类,是面向对象的即OOP的对象类型。int一般只用... 查看详情

基本数据类型和引用数据类型的区别是啥

本文介绍“基本数据类型和引用数据类型的区别”1、基本数据类型由于在内存中的一个地址存放的是这些变量的值所以调用函数,函数里的形参,就是复制这些变量的值以后对形参值的变化不会影响到原来变量的值;2、引用数... 查看详情

什么时候在java中使用linkedhashmap而不是hashmap?

】什么时候在java中使用linkedhashmap而不是hashmap?【英文标题】:Whentouselinkedhashmapoverhashmapinjava?【发布时间】:2014-12-2417:32:46【问题描述】:在linkedhashmap和hashmap中选择的实际场景是什么?我已经完成了每个工作,得出的结论是lin... 查看详情

值传递和引用传递

...类型:  基本类型:byteshortintfloatlongdoublecharboolean  引用类型:类类型,接口类型,数组类型。  基本类型的变量保存原始值,它代表的是数值本身,  引用类型的变量保存引用值,“引用值”指向内存空间地址,代表... 查看详情

基本类型引用类型的复制传递参数

...型是按值访问的,因为可以操作保存在变量中的实际值。引用类型:指那些由多个值构成的对象。引用类型的值是保存在内存中的对象。JavaScript不允许访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时... 查看详情

javaconcurrenthashmap和hashmap的区别

...就是ConcurrentHashMap是线程安全的,hashMap不是线程安全的。为什么线程安全呢:ConcurrentHashMap代码中可以看出,它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable,根据key.hashCode()来决定把key放到... 查看详情

数据类型

...引用类型常见的有:String、StringBuffer、ArrayList、HashSet、HashMap等。String也属于引用数据类型:如果要对比两个对象是否相同,则需要使用equals()方法。注意!!:equals()方法的默认行为是比较引用 查看详情

hashmap中判断key条件(代码片段)

...ash&&((k=p.key)==key||(key!=null&&key.equals(k))))源码中为什么使用了equals判断相等后,同时需要判断hash码是否相同?这里需要注意的是key可以使对象即Object类型的,也可以是Long、Integer等类型;  如果是object作为key,实际判... 查看详情

java里面的int类型和integer类型,有啥不一样

...teger是包装类,也就是类。Integer是比int更高级的数据类型为什么java中使用int而不像vb中那样使用Integerint是面向机器底层的数值类型,是Primitive类型的数据类型,而Integer是int的Warpper类,是面向对象的即OOP的对象类型。int一般只用... 查看详情

包装类

...基本类型变成以对象形式存在,java对8个基本类型提供了引用类型。这8个引用类型称为基本类型的“包装类”基本类型           查看详情

javascript—基本类型和引用类型的区别

...(一)基本概念JS中可以把变量分成两部分,基本类型和引用类型。基本类型比较简单,包括:Undefined、Null、Boolean、Number和String,基本类型值就是简单的数据段;引用类型值可能由多个值构成的对象。引用类型值保存在内存中... 查看详情

关于java中hashmap的put方法中的参数问题

...,还有value中我应该插入什么值list.put(objcetkey,objcetvalue);HashMap是以键值对形式保存数据的,简单形容可以理解为学号(key),学员(value)object类型是java中除了基本数据类型以外的超类,也就是说只要你放的对象类型直接或间接继承object,... 查看详情

面试官:怎么删除hashmap中的重复元素?第3种实现思路,99%的人不会!(代码片段)

...除HashMap中Value重复的元素,这也是面试官可能会问到的。为什么不是根据Key去重?大家都知道,HashMap的key是不会重复的,如果有重复就会用新值覆盖旧值。当我们向一个HashMap中插入元素时,HashMap会根据这个key的equals和hashCode方... 查看详情

java中hashmap和hashtable分别是干啥用的?就是说他们有啥用途?啥时候用?

Java中HashMap和Hashtable分别是干什么用的?就是说他们有什么用途?什么时候用?始终不明白它们是干什么的,困惑啊,希望高手指点。1HashMap不是线程安全的hastmap是一个接口是map接口的子接口,是将键映射到值的对象,其中键和... 查看详情

java中byte和byte的区别?

...类型关于Byte的更过详情请查看JavaAPI文档 参考技术BByte是引用类型,byte是值类型(原型),Byte是一个类有方法如:BooleanbooleanDoubledouble...... 参考技术CByte是包装类型,byte是基本类型,两个可以互相转换。包装类型默认是null,而基本类... 查看详情

hashmap中key类型的选择(代码片段)

什么对象可以作为HashMap的key值?从HashMap的语法上来讲,一切对象都可以作为Key值。如:Integer、Long、String、Object等。但是在实际工作中,最常用的使用String作为Key值。原因如下:1.使用Object作为Key值的时候,如ClassPerson(里面包含... 查看详情