/*** @author ZhangHaiWen </a>* @create 2018/8/8 0008* @desc 自定义的HashMap**/public class MyHashMap implements HashMap {private Node[] tables;private int iniSize;public MyHashMap(){iniSize = 16;this.tables = new Node[iniSize];// 创建对象时初始化大小}public MyHashMap(int iniSize){this.iniSize = iniSize;this.tables = new Node[iniSize];// 创建对象时初始化大小}@Overridepublic Object get(Object key) {int i = coordinate(key);if(tables[i] != null){//当前的NodeNode thisNode = tables[i];//下一个NodeNode nextNode = thisNode.getNextNode();while (thisNode.getKey()!=key){nextNode = thisNode;thisNode = nextNode.getNextNode();}Object value = thisNode.getValue();return value;}return null;}@Overridepublic void put(Object key, Object value) {if(null==key){throw new RuntimeException("key不能为null");}int i = coordinate(key);Node newNode = new Node(key,value);if(tables[i] != null){//当前的NodeNode thisNode = tables[i];//下一个NodeNode nextNode = thisNode.getNextNode();while (thisNode.getNextNode()!=null){nextNode = thisNode;thisNode = nextNode.getNextNode();}thisNode.setNextNode(newNode);}else{tables[i] = newNode;}}public int coordinate(Object key){if(null!=key){return key.hashCode() % iniSize; // hascode值除map大小取余}return 0;}public static void main(String[] args) {MyHashMap myHashMap = new MyHashMap();myHashMap.put(1,"asd");myHashMap.put(2,"asda");System.out.println(myHashMap.get(2));}}class Node{private Object key;private Object value;private Node nextNode;public Node(Object key, Object value) {this.key = key;this.value = 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 Node getNextNode() {return nextNode;}public void setNextNode(Node nextNode) {this.nextNode = nextNode;}}

自定义实现HashMap(简单实现)相关推荐

  1. JVM&NIO&HashMap简单问

    JVM&NIO&HashMap简单问 背景:前几天在网上看到关于JVM&NIO&HashMap的一些连环炮的面试题,整理下以备不时之需. 一.JVM Java的虚拟机的 ...

  2. hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存

    hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存 前面我们已经提及过hibernate内部为二级缓存的扩展做了很多的实现.我们只需要实现RegionFactoryTem ...

  3. java程序设计颜志军_JSP 自定义标签之一 简单实例

    在JSP中使用自定义标签可以达到这样的目的,事实上,我们所熟知的各类框架基本上都是通过自定义标签的形式来实现的. 通过使用自定义标签,我们可以将实现复杂的逻辑在页面用简单的标签来加以展示.下面我们来实 ...

  4. react dispatch_React系列自定义Hooks很简单

    React系列-Mixin.HOC.Render Props(上) React系列-轻松学会Hooks(中) React系列-自定义Hooks很简单(下) 我们在第二篇文章中介绍了一些常用的hooks ...

  5. Android自定义键盘的简单实现

    概述 突然发现好多软件都使用了自己定义的软键盘.自己就想着先把这块坑先踩踩把,以后掉坑的时候不至于帅的太惨.言归正传,对于自定义软键盘.需要用到系统提供的两个类:Keyboard和KeyboardVi ...

  6. 火山安卓自定义列表框简单操作教程

    本源码转载自利快云https://www.lkuaiy.com/ 火山安卓自定义列表框简单操作教程   一.列表项布局设计 1.简单的在布局器中放两个文本框组件并公开. 二.列表数据类设计 1.定义一 ...

  7. 自定义实现HashMap(二)

    今天看了一下自己的 简单实现HashMap,发现好多问题,今天又重新实现了一下,整体思想还是基于数组加链表的形式实现的.思路如下:数组下挂了一个个链表. 首先创建一个类作为链表.很简单 只是简单的记录 ...

  8. JSP自定义标签之简单标签入门

    在sun官方文档上有下面这样一段话. 官方文档声明 public interface SimpleTag extends JspTag Interface for defining Simple Ta ...

  9. java方便适配器,JAXB简单自定义适配器以及简单使用

    JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...

最新文章

  1. ICC_lab总结——ICC_lab4:时钟树综合
  2. 中科院分词系统(NLPIR)JAVA简易教程
  3. 基于C++全局变量的声明与定义的详解
  4. NumPy - 字符串函数
  5. html 使用button调用函数
  6. Python -- xlrd,xlwt,xlutils 读写同一个Excel
  7. 21.Shiro在springboot与vue前后端分离项目里的session管理
  8. 2应用层 - P2P应用
  9. 八爪鱼采集器32位_飞智八爪鱼2游戏手柄评测
  10. openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  11. Nginx基础应用配置小结 - 运维笔记
  12. tflearn的VocabularyProcessor用法:建立中文词汇表和把文本转为词ID序列
  13. 笔记本无线上网设置教程(图文)
  14. 微信个性签名服务器维护,微信个性签名显示由于系统维护
  15. 畅写Office云端SDK :“硬核”赋予企业应用在线文档I在线协作编辑I在线预览I在线格式转换服务
  16. 计算机安全面临的常见问题分析
  17. strip: Unable to recognise the format of the input file
  18. single dog
  19. java double 赋值语句_Java中float、double、long类型变量赋值添加f、d、L尾缀问题
  20. python属于计算机几级_我的天呐!Python 入选计算机等级考试了!

热门文章

  1. 查看端口被占用命令(Windows+Linux)
  2. linux c语言 休眠函数,c语言sleep函数报错
  3. 联通宽带固定ip设置 为了内部测试稳定性和便捷性
  4. 微博掘金旅游大数据,商业化的好选择?
  5. 打包手机app(手机可以下载)
  6. 一分钟玩转RPA——word批量转pdf
  7. 电信宽带没有路由器也能上无线网
  8. centos安装duf
  9. 计算机软件ios,苹果airdrop和计算机同时按软件
  10. 两个不同配置的服务器之间如何进行数据迁移