/**
* @author Wyt
* @date 2021/3/31 20:08
*/publicinterfacem_Map<K, V>{
V put(K k, V v);
V get(K k);intsize();interfacem_Entry<K, V>{
K getKey();
V getValue();}}
2. m_HashMap.java
/**
* @author Wyt
* @date 2021/3/31 20:07
*/publicclassm_HashMap<K, V>implementsm_Map<K, V>{
private m_Entry<K, V> m_table[]= null;int size =0;publicm_HashMap(){
this.m_table =newm_Entry[16];}/**
* 哈希算法
* @param k 键
* @return key 对应的哈希值
*/privateinthash(K k){
int index = k.hashCode()%16;return index >=0? index :-index;}/**
* 通过 key hash 算法 hash
* index 下标数组 当前下标对象
* 判断当前对象是否为空 如果为空,直接存储
* 如果不为空,冲突 next 链表 (头插)
* 返回当前的节点对象
* @param k 键
* @param v 值
* @return 值
*/@Overridepublic V put(K k, V v){
int index =hash(k);
m_Entry<K, V> m_entry = m_table[index];if(m_entry == null){
m_table[index]=newm_Entry<>(k, v, index, null);this.size++;}else{
m_table[index]=newm_Entry<>(k, v, index, m_entry);}return m_table[index].getValue();}/**
* 通过 key 进行 hash
* 找到 index 下标对应的对象
* 判断当前对象是否为空
* 如果不为空 则判断是否相等
* 如果不相等 继续沿着链表搜索
* 知道相等 或者为空
* @param k 键
* @return 值
*/@Overridepublic V get(K k){
if(this.size ==0){
return null;}int index =hash(k);
m_Entry