博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashMap底层实现练习
阅读量:4936 次
发布时间:2019-06-11

本文共 2419 字,大约阅读时间需要 8 分钟。

/** * Created by chengbx on 2018/5/19. * 简单版 */public class CbxMap {    CbxEntry [] cbxEntries = new CbxEntry[999];    int size;    public void put(Object key,Object value){        //解决键重复的问题        for (int i = 0; i < size; i++) {            if(cbxEntries[i].getKey().equals(key)){                cbxEntries[i].setValue(value);                return ;            }        }        CbxEntry cbxEntry = new CbxEntry(key,value);        cbxEntries[size++] = cbxEntry;    }    public Object get(Object key){        for (int i = 0; i < size; i++) {            if(cbxEntries[i].getKey().equals(key)){                return cbxEntries[i].getValue();            }        }        return null;    }    public boolean containsKey(Object key){        for (int i = 0; i < size; i++) {            if(cbxEntries[i].getKey().equals(key)){                return true;            }        }        return  false;    }    public boolean containsValue(Object value){        for (int i = 0; i < size; i++) {            if(cbxEntries[i].getValue().equals(value)){                return true;            }        }        return  false;    }}class CbxEntry{    private Object key;    private Object value;    public Object getKey() {        return key;    }    public void setKey(Object key) {        this.key = key;    }    public Object getValue() {        return value;    }    public void setValue(Object value) {        this.value = value;    }    public CbxEntry(Object key, Object value) {        this.key = key;        this.value = value;    }}
/** * Created by chengbx on 2018/5/19. * 优化版 */public class CbxHashMap {    LinkedList[] linkedArr = new LinkedList[999];//Map的底层结构就是:数组 + 链表    int size;    public  int getHashCodeByKey(Object key){        return key.hashCode() % linkedArr.length;    }    public void put(Object key,Object value){       CbxEntry cbxEntry = new CbxEntry(key,value);       int arrIndex = getHashCodeByKey(key);       if(linkedArr[arrIndex]==null){            LinkedList linkedList = new LinkedList();            linkedList.add(cbxEntry);            linkedArr[arrIndex] = linkedList;       }else{           linkedArr[arrIndex].add(cbxEntry);       }    }    public Object get(Object key){        int arrIndex = getHashCodeByKey(key);        if(linkedArr[arrIndex]!=null){            LinkedList linkedList= linkedArr[arrIndex];            for (int i = 0; i 

 

转载于:https://www.cnblogs.com/cbxBlog/p/9127128.html

你可能感兴趣的文章
【转载】Amit’s A star Page 中译文
查看>>
GitHub Blog创建以及本地管理
查看>>
注册谷歌账号并验证时显示号码无法用于验证的问题
查看>>
Hive 变量和属性
查看>>
验证邮箱合法性的一些测试样例
查看>>
Python安装第三方库 xlrd 和 xlwt 。处理Excel表格
查看>>
课后作业-阅读任务-阅读提问-3
查看>>
Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
查看>>
细说sqlserver索引及SQL性能优化原则
查看>>
一般数据库增量数据处理和数据仓库增量数据处理的几种策略
查看>>
离散数学课后作业
查看>>
centos6.5适用的国内yum源:网易、搜狐
查看>>
[winograd]winograd算法在卷积中的应用
查看>>
视频直播技术(三):低延时直播经验总结
查看>>
微软Office Online服务安装部署(一)
查看>>
Application failed to start because it could not find or load the QT platform plugin “windows”
查看>>
python合并多表或两表数据
查看>>
分享一下伪装刚学的
查看>>
《sqlite权威指南》读书笔记 (一)
查看>>
Harbor-修改默认80端口
查看>>