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;
    }
}

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

发布了8 篇原创文章 · 获赞 0 · 访问量 84

猜你喜欢

转载自blog.csdn.net/qq_43677686/article/details/103971482
今日推荐