自定义实现HashMap(简单实现)
/*** @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(简单实现)相关推荐
- JVM&NIO&HashMap简单问
JVM&NIO&HashMap简单问 背景:前几天在网上看到关于JVM&NIO&HashMap的一些连环炮的面试题,整理下以备不时之需. 一.JVM Java的虚拟机的 ...
- hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存
hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存 前面我们已经提及过hibernate内部为二级缓存的扩展做了很多的实现.我们只需要实现RegionFactoryTem ...
- java程序设计颜志军_JSP 自定义标签之一 简单实例
在JSP中使用自定义标签可以达到这样的目的,事实上,我们所熟知的各类框架基本上都是通过自定义标签的形式来实现的. 通过使用自定义标签,我们可以将实现复杂的逻辑在页面用简单的标签来加以展示.下面我们来实 ...
- react dispatch_React系列自定义Hooks很简单
React系列-Mixin.HOC.Render Props(上) React系列-轻松学会Hooks(中) React系列-自定义Hooks很简单(下) 我们在第二篇文章中介绍了一些常用的hooks ...
- Android自定义键盘的简单实现
概述 突然发现好多软件都使用了自己定义的软键盘.自己就想着先把这块坑先踩踩把,以后掉坑的时候不至于帅的太惨.言归正传,对于自定义软键盘.需要用到系统提供的两个类:Keyboard和KeyboardVi ...
- 火山安卓自定义列表框简单操作教程
本源码转载自利快云https://www.lkuaiy.com/ 火山安卓自定义列表框简单操作教程 一.列表项布局设计 1.简单的在布局器中放两个文本框组件并公开. 二.列表数据类设计 1.定义一 ...
- 自定义实现HashMap(二)
今天看了一下自己的 简单实现HashMap,发现好多问题,今天又重新实现了一下,整体思想还是基于数组加链表的形式实现的.思路如下:数组下挂了一个个链表. 首先创建一个类作为链表.很简单 只是简单的记录 ...
- JSP自定义标签之简单标签入门
在sun官方文档上有下面这样一段话. 官方文档声明 public interface SimpleTag extends JspTag Interface for defining Simple Ta ...
- java方便适配器,JAXB简单自定义适配器以及简单使用
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
最新文章
- ICC_lab总结——ICC_lab4:时钟树综合
- 中科院分词系统(NLPIR)JAVA简易教程
- 基于C++全局变量的声明与定义的详解
- NumPy - 字符串函数
- html 使用button调用函数
- Python -- xlrd,xlwt,xlutils 读写同一个Excel
- 21.Shiro在springboot与vue前后端分离项目里的session管理
- 2应用层 - P2P应用
- 八爪鱼采集器32位_飞智八爪鱼2游戏手柄评测
- openssl生成RSA格式及pkcs1与pkcs8格式互相转换
- Nginx基础应用配置小结 - 运维笔记
- tflearn的VocabularyProcessor用法:建立中文词汇表和把文本转为词ID序列
- 笔记本无线上网设置教程(图文)
- 微信个性签名服务器维护,微信个性签名显示由于系统维护
- 畅写Office云端SDK :“硬核”赋予企业应用在线文档I在线协作编辑I在线预览I在线格式转换服务
- 计算机安全面临的常见问题分析
- strip: Unable to recognise the format of the input file
- single dog
- java double 赋值语句_Java中float、double、long类型变量赋值添加f、d、L尾缀问题
- python属于计算机几级_我的天呐!Python 入选计算机等级考试了!