HashMap简单实现

本文介绍了自定义的HashMap实现,基于数组和链表结构,涵盖了MyMap接口和MyHashMap类,以及测试类MyHashMapTest。文章指出这仅是HashMap的基础实践,深度理解还需进一步学习,目前只实现了put和get方法,后续可能扩展remove等操作。代码已上传至GitHub。
摘要由CSDN通过智能技术生成

手写一个最简单的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值