java实现简单的HashMap结构

  • 注意:只是实现了在链表中的插入和读取,没有考虑红黑树的情况
  • HashMap一般适用于读多写少的场景,即读取的多,插入的少,通常是一次写入,余下的操作基本上都是读取数据

确定每个“桶”中元素的结构

链表中每个节点的结构应该包含一个键,一个值,还有一个指向下一个节点的指针,所以“桶”中的结构应该如下:
HashMap的简单图形结构
代码如下:

public class Link2 <KEY,VALUE> {
    public KEY key;
    public VALUE value;
    public Link2 next;
}

生成哈希表,并对哈希表进行存储和读取数据的操作

利用哈希值确定将数据插入到哪个“桶”中,同样利用哈希值确定要从哪个“桶”中查找数据并取出

public class HashMap2 <KEY,VALUE> {
    //生成哈希表
    public Link2<KEY,VALUE>[] data=new Link2[20];
    public void put(KEY a,VALUE b){
        //获得a的哈希值,根据哈希值将对象放到指定的桶中
        int s=a.hashCode();
        s=s%data.length;
        Link2<KEY,VALUE> newnode=new Link2<>();
        newnode.key=a;
        newnode.value=b;
        //若数组的对应位置为空,则可以直接插入
        if(data[s]==null){
            data[s]=newnode;
        }else{
            //否则,将对象插入到对应队列的头部
            newnode.next=data[s];
            data[s]=newnode;
        }
    }
    public VALUE get(KEY a){
        VALUE re=null;
        int s=a.hashCode();
        s=s%data.length;
        //将数据取出
        Link2<KEY,VALUE> newnode=data[s];
        while(newnode!=null){
            if(newnode.key==a){
                re=newnode.value;
                break;
            }
            newnode=newnode.next;
        }
        return re;
    }
}

写完这些就可以进行测试啦!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值