当前位置: 首页 > news >正文

做公司网站一般多少钱文娱热搜榜

做公司网站一般多少钱,文娱热搜榜,阜阳手机网站建设,网页美工设计学习Java之HashMap的底层实现 摘要HashMap的底层原理哈希值转换为数组下标节点初始化put(Object key, Object value)重写toString()get(Object key)增加泛化remove(K key) 摘要 本博客主要讲述了Java的HashMap的底层实现 HashMap的底层原理 底层原理:数组链表 过程…

Java之HashMap的底层实现

  • 摘要
    • HashMap的底层原理
    • 哈希值转换为数组下标
    • 节点
    • 初始化
    • put(Object key, Object value)
    • 重写toString()
    • get(Object key)
    • 增加泛化
    • remove(K key)

摘要

本博客主要讲述了Java的HashMap的底层实现

HashMap的底层原理

底层原理:数组+链表
在这里插入图片描述
在这里插入图片描述
过程总结:每一个Object的有一个哈希值,通过hashCode()函数获取哈希值,再通过自定义的hash()函数,得到一个值,也就是数组的下标。数组中的每个元素都是一个链表或为空。

哈希值转换为数组下标

在这里插入图片描述

//这就是hash函数,val就是key的哈希值,即val = key.hashCode()
//length 必须是2的整数幂
private int  hash(int val, int length){return val & (length - 1);}

节点

定义链表中的节点

public class Node2 {int hash;//hash对应数组下标Object key;Object value;Node2 next;
}

初始化

//数组元素的类型为Node2
Node2[] table;
int size;public SxtHashMap02() {table = new Node2[16];
}

put(Object key, Object value)

public void put(Object key, Object value){Node2 newNode = new Node2();newNode.hash = hash(key.hashCode(),table.length);newNode.key = key;newNode.value = value;newNode.next = null;Node2 last = null;//这个学习一下,记录最后一个节点int index = hash(key.hashCode(),table.length);if(table[index] == null){table[index] = newNode;size ++;}else{Node2 tmp = table[index];while(tmp != null){if(key.equals(tmp.key)){System.out.println("key重复了");tmp.value = value;return;}else {last = tmp;tmp = tmp.next;}}last.next = newNode;size ++;//size的增加与减少不要忘记}}

重写toString()

public String toString() {StringBuilder sb = new StringBuilder();sb.append("[");for(int i = 0; i < table.length; i ++){Node2 temp = table[i];while(temp != null){sb.append(temp.key + ":" + temp.value + ",");temp = temp.next;}}//这个套路学一下,将最后改为']'sb.setCharAt(sb.length() - 1,']');return sb.toString();
}	

这个toString()有什么用呢?在使用system.out.println()打印的时候,就会用到toString()。

get(Object key)

//根据Map的底层原理,就十分简单
public Object get(Object key){int hashCode = key.hashCode();int hash = hash(hashCode,table.length);Node2 temp = table[hash];while(temp != null){if(temp.key.equals(key)) return temp.value;temp = temp.next;}return null;
}

增加泛化

public class Node3<K,V> {int hash;K key;V value;Node3 next;
}public class SxtHashMap03<K,V> {Node3[] table;int size;public SxtHashMap03() {table = new Node3[16];}public V get(K key){int hashCode = key.hashCode();int hash = hash(hashCode,table.length);V value = null;Node3 temp = table[hash];while(temp != null){if(temp.key.equals(key)){value = (V)temp.value;}temp = temp.next;}return value;}public void put(K key, V value){Node3 newNode = new Node3();newNode.hash = hash(key.hashCode(),table.length);newNode.key = key;newNode.value = value;newNode.next = null;Node3 last = null;int index = hash(key.hashCode(),table.length);if(table[index] == null){table[index] = newNode;size ++;}else{Node3 tmp = table[index];while(tmp != null){if(key.equals(tmp.key)){System.out.println("key重复了");tmp.value = value;return;}else {last = tmp;tmp = tmp.next;}}last.next = newNode;size ++;}}
}

remove(K key)

 public void remove(K key){int index = hash(key.hashCode(), table.length);Node3 temp = table[index];if(temp == null) return;if(temp.key.equals(key)){table[index] = temp.next;size --;return;}Node3 last = null;while(temp != null){if(temp.key.equals(key)){last.next = temp.next;size --;return;}last = temp;temp = temp.next;}
}

参考: 手工实现HashMap

http://www.wangmingla.cn/news/422.html

相关文章:

  • 如何把自己做的网站放到www中国职业培训在线官方网站
  • 做装修效果图的网站有哪些软件下载希爱力双效片骗局
  • 9e做网站百度指数第一
  • 网站信息备案查询系统杭州网络优化公司排名
  • 深入解析wordpress 下载百度seo优化策略
  • 农产品如何建设网站网络营销的职能有哪些
  • 做公司网站宣传公司seo日常工作都做什么的
  • 建设电子商务网站策划书长春百度网站快速排名
  • 学院网站建设项目的活动分解软文街官网
  • 文档下载免费网站百度网站收录
  • 重庆网站推广团队今日刚刚发生的新闻
  • 一流的网站建设google 网站推广
  • 网站的网络公司营销软文范例大全100字
  • ui设计零基础到精通自学seo英文怎么读
  • 昆明的房产网站建设seo优质友链购买
  • 石家庄热搜北京网络优化推广公司
  • 网站开发公司招聘技术人员关键词搜索推广
  • 如何建设好网站百度关键词优化多少钱一年
  • 织梦网站必须下载地址怎么制作一个网站
  • edd次元的避风港网站代理什么关键词能搜到资源
  • 北京专业网站建设公司排名好用的种子搜索引擎
  • 淘宝网站怎么做的好坏seo搜索引擎优化总结报告
  • 建立一个自己的网站需要多少钱关键词优化需要从哪些方面开展
  • 网站初期建设的成本来源seo可以提升企业网站的
  • 网站建设电商学堂百度云网盘资源
  • 免费商城网站建设seo关键词怎么优化
  • 深圳网站制作公司电话今日财经最新消息
  • 广州在线图文网络科技中心网站建设近期国际新闻热点大事件
  • 字体设计网站有哪些免费网络营销软件推广
  • 租个国内服务器做网站多少钱推广平台哪儿有怎么做