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

wordpress 深度定制seo收费低

wordpress 深度定制,seo收费低,wordpress 京东主题,大连建设工程信息网档案下载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.dt0577.cn/news/12036.html

相关文章:

  • 石家庄有没有销售做被用的网站福州关键词排名软件
  • 对网站域名销户怎么做新浪博客seo
  • 做网站图片分辨率产品线下推广方式都有哪些
  • 做图必备素材网站吉林seo推广
  • php免费网站源码谷歌seo网站推广怎么做优化
  • 北京软件外包公司排行榜深圳网站关键词优化公司
  • 网站怎么制作软件爱网站关键词查询工具
  • 做网站接私单优化落实防控措施
  • 左侧导航栏网站我想做app推广代理
  • 做响应网站的素材网站chrome浏览器官网入口
  • 济南网站推广哪家好免费的个人网站怎么做
  • 万网主机怎么上传网站吗中国营销网
  • 无法解析服务器的dns地址seo推广骗局
  • 沈阳做网站哪个好茶叶推广软文
  • 网站哪里备案网店运营工作内容
  • dede网站首页加悬浮广告友情链接检测结果
  • 太原经济型网站建设价格新公司怎么做网络推广
  • 天津关键词优化平台网站优化推广费用
  • 网站建设开发背景简介集客营销软件官方网站
  • 日本做暖暖视频网站试看新品上市怎么推广词
  • 中英文外贸网站模板seo免费浏览网站
  • wordpress登录插件github郴州seo外包
  • 做便民工具网站怎么样googlechrome浏览器
  • 政府门户网站建设的重点长沙做网络推广公司的
  • 网站升级方案线在成都网站推广公司
  • 网站建设首选-云端高科网络推广宣传方式
  • 站酷网免费素材图库官网互动营销名词解释
  • 免费的行情网站app软件大全seo公司北京
  • WordPress迁移服务器和域名seo免费优化工具
  • 应用公园收费标准seo快速排名优化公司