Java实现一个简单的HashMap
Hash表是一个数组+链表的结构。
数组具有遍历快,增删慢的特点。数组在堆中是一块连续的存储空间,遍历时数组的首地址是知道的(首地址=首地址+元素字节数 * 下标),所以遍历快;
链表具有增删快,遍历慢的特点。链表中各元素的内存空间是不连续的,一个节点至少包含节点数据与后继节点的引用,所以在插入删除时,只需修改该位置的前驱节点与后继节点即可,所以增删快。
Hash表利用数组与链表的特性相结合能够保证在遍历与增删的过程中,如果不产生hash碰撞,仅需一次定位就可完成。
首先,我们需要创建一个Node节点,这个节点包含key、value、next指针。
public class Node{
private Object key;
private Object value;
private Node next;
//空节点
public Node() {
}
//值为key,value的节点
public Node(Object key, Object value) {
this.key = key;
this.value = value;
}
//Getter && Setter略
}
接下来构建HashMap,size定义了hashmap的初始化大小。
public class MyHash {
//初始化长度为8
private int size = 8;
//成员个数
private int number =