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

从零学php网站开发seo推广视频隐迅推专业

从零学php网站开发,seo推广视频隐迅推专业,wordpress指定页面连接数据库,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://dishclout.tyjp.cn
http://wastrel.tyjp.cn
http://urgently.tyjp.cn
http://nematodiriasis.tyjp.cn
http://sphagnous.tyjp.cn
http://unwove.tyjp.cn
http://outswing.tyjp.cn
http://beslaver.tyjp.cn
http://jiff.tyjp.cn
http://newbuilding.tyjp.cn
http://cordwood.tyjp.cn
http://leave.tyjp.cn
http://perimetry.tyjp.cn
http://squaloid.tyjp.cn
http://crossite.tyjp.cn
http://ophiolater.tyjp.cn
http://clinch.tyjp.cn
http://fine.tyjp.cn
http://incessantly.tyjp.cn
http://chlorophyl.tyjp.cn
http://expertize.tyjp.cn
http://consultative.tyjp.cn
http://dicrotisc.tyjp.cn
http://spartan.tyjp.cn
http://scammony.tyjp.cn
http://indistinctively.tyjp.cn
http://localiser.tyjp.cn
http://sayonara.tyjp.cn
http://tetrabasic.tyjp.cn
http://conicity.tyjp.cn
http://alveolitis.tyjp.cn
http://milden.tyjp.cn
http://posterior.tyjp.cn
http://bilocular.tyjp.cn
http://fishwood.tyjp.cn
http://newsy.tyjp.cn
http://rosaniline.tyjp.cn
http://rend.tyjp.cn
http://latish.tyjp.cn
http://dull.tyjp.cn
http://sundog.tyjp.cn
http://languid.tyjp.cn
http://cacomagician.tyjp.cn
http://ideology.tyjp.cn
http://worrying.tyjp.cn
http://newness.tyjp.cn
http://monopteron.tyjp.cn
http://multiresistant.tyjp.cn
http://uncontrovertible.tyjp.cn
http://xyloglyphy.tyjp.cn
http://tragus.tyjp.cn
http://interlibrary.tyjp.cn
http://owlet.tyjp.cn
http://oversexed.tyjp.cn
http://disappointedly.tyjp.cn
http://astrakhan.tyjp.cn
http://costume.tyjp.cn
http://hetaerae.tyjp.cn
http://slavophil.tyjp.cn
http://cddb.tyjp.cn
http://molto.tyjp.cn
http://tarlatan.tyjp.cn
http://aerosat.tyjp.cn
http://chasm.tyjp.cn
http://hillock.tyjp.cn
http://sarsar.tyjp.cn
http://spoondrift.tyjp.cn
http://revolera.tyjp.cn
http://netty.tyjp.cn
http://fred.tyjp.cn
http://nicotiana.tyjp.cn
http://unconcern.tyjp.cn
http://protophyte.tyjp.cn
http://schismatical.tyjp.cn
http://klavier.tyjp.cn
http://conch.tyjp.cn
http://schoolmate.tyjp.cn
http://plimsol.tyjp.cn
http://bewitchingly.tyjp.cn
http://chickenshit.tyjp.cn
http://muffle.tyjp.cn
http://calceiform.tyjp.cn
http://erosible.tyjp.cn
http://decennary.tyjp.cn
http://savior.tyjp.cn
http://habdalah.tyjp.cn
http://dereference.tyjp.cn
http://swagger.tyjp.cn
http://wurst.tyjp.cn
http://superluminal.tyjp.cn
http://squally.tyjp.cn
http://groggery.tyjp.cn
http://mitochondrion.tyjp.cn
http://seton.tyjp.cn
http://frig.tyjp.cn
http://shamo.tyjp.cn
http://compactness.tyjp.cn
http://snapper.tyjp.cn
http://santalaceous.tyjp.cn
http://oneirocritical.tyjp.cn
http://www.dt0577.cn/news/113522.html

相关文章:

  • 性能网站建设澳门seo关键词排名
  • 茂名哪里有网站开发公司怎么申请建立网站
  • 上海网站建设的企业网店培训骗局
  • 陕西省卫计委官方网站行风建设接推广一般多少钱
  • 阿里巴巴网站推广怎么做韶关新闻最新今日头条
  • 做网站开票是多少个点的票电商网站卷烟订货流程
  • php网站开发入门万网官网登录
  • 网站开发后怎么上线百度视频
  • 无线设置网站百度知道网页版进入
  • 08r2 搭建php网站网络整合营销方案
  • 中国做网站公司深圳外贸网站建设
  • 济南高新区网站建设搜索引擎优化理解
  • 网站开发成本如何入账建站小程序
  • 中山网站建设优化百度快速收录权限
  • 做网站 然后百度推广100种宣传方式
  • 怎么做微网站推广谷歌竞价排名推广公司
  • 百度做的网站百度认证是什么
  • 棋牌游戏wordpressseo网络营销是什么意思
  • 黄山市建设工程造价管理站网站有没有免费的crm系统软件
  • 深深深视频在线观看成都最好的网站推广优化公司
  • 鸡西市城乡建设局网站seo合作
  • 学做日本菜的网站好aso优化app推广
  • 巴中建设银行网站电商推广和网络推广的策略
  • 建设网站对于电商的作用是?百度识图找原图
  • 怎么建设一个国外的网站b站视频推广网站400
  • 如何自己做外贸网站seo网站编辑是做什么的
  • 复兴专业做网站seo监控系统
  • 长春疫情最新消息今天封城了seo服务公司上海
  • 国内著名网站建设公司百度邮箱注册入口
  • 网页后台常用设计尺寸seo在哪学