手写一个最简单的HashMap
写的是数组加链表的HashMap(没有加入红黑树)
MyMap接口
package com.tsu.zqy.HashMap;
/**
* @InterfaceName MyMap
* @Author Elv1s
* @Date 2019/5/17 16:22
* @Description:
*/
public interface MyMap<K,V> {
/**
* 存数据
* @param k
* @param v
* @return
*/
V put(K k, V v);
/**
* 读数据
* @param v
* @return
*/
V get(K v);
interface Entry<K,V>{
K getkey();
V getValue();
}
}
MyHashMap
package com.tsu.zqy.HashMap;
/**
* @ClassName MyHashMap
* @Author Elv1s
* @Date 2019/5/17 16:25
* @Description:
*/
public class MyHashMap<K, V> implements MyMap<K, V> {
/**
* hashMap由数组加链表组成(jdk8之前; 从jdk8开始,链表长度大于8,就开始使用红黑树,为了加快遍历)
*/
private Entry<K, V>[] table = null;
/**
* 默认值为16
*/
private Integer defaultLength = 4;
/**
* 扩容因子:
* currentSize / table.length = defauleLoad
* 一旦达到这个因子, table 就会扩容, 一般都是扩大为原来的两倍
*/
private final double defauleLoader = 0.75d;
/**
* 当前map中对象的个数
*/
private int size;
/**
* 无参构造
*/
public MyHashMap() {
this.table = new Entry[defaultLength];
this.size = 0;
}
/**
* 如果到达阈值,就调整大小
*/
/* pub