java Map接口、HashMap实现类、HashMap实现类方法和原理

本文详细介绍了Java中的Map接口,特别是HashMap实现类。Map接口提供键值对的存储,HashMap使用拉链法解决哈希冲突,通过内部的Entry对象存储数据。文章还讨论了HashMap的存储结构,包括其内部的Node数组和链表,以及在JDK8中引入的红黑树。此外,解释了HashMap的构造器、put方法以及扩容策略,强调了如何通过重写hashCode()和equals()方法避免键冲突。
摘要由CSDN通过智能技术生成

Map接口、HashMap实现类、HashMap实现方法及HashMap解决一般问题的原理

Map接口

哈希表就是一种以键-值(key-indexed) 存储数据的结构,只要输入待查找的值即key,即可查找到其对应的值。

哈希的思路很简单,如果所有的键hashCode都是整数,那么就可以使用一个简单数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。

简单的计算方法hashcode%数组长度=【0,数组的长度-1】

它提供了一组键值的映射。其中存储的每个数据对象都有一个相应的键key,键决定了值对象在Map中的存储位置。键应该是唯一的,不允许重复,每个key只能映射一个value。

Map接口的定义

在这里插入图片描述
定义map对象时需要指定key和value对应的类型,必须是复杂类型,不能使用int

map接口中有一个内部接口为Entry:interface Entry<K,V>封装所存储的key-value对数据

interface Entry<K,V> {
   
        K getKey();   因为key决定数据的存放位置,一旦存储成功则key不允许修改
        V getValue();    针对value提供get/set方法
        V setValue(V value);
//存储的数据应该是可以进行等值判断的,key不允许重复
        boolean equals(Object o);
        int hashCode();
}

结论:每个Entry对象中封装了一个key和value

另外Entry接口中通过静态方法提供了一组比较器的默认实现
在这里插入图片描述
用于规范其中存放数据的规则,map中所存放的数据将给封装为一个一个的Entry,一个key/value对对应一个Entry对象

Map接口中常见方法

Object put(Object key,Object value):用来存放一个键-值对Map中 ,如果出现key值冲突则后盖前。允许key值和value值为null,但是key值为null只能有一个,value值为null没有个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值