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没有个数