Java实现一个简单的HashMap

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 =
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值