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

青岛哪个网站建设公司价格低还能好一些如何找友情链接

青岛哪个网站建设公司价格低还能好一些,如何找友情链接,软文营销文章范文,cc域名网站需要备案吗1、本人博客《HashMap、HashSet底层原理分析》 2、本人博客《若debug时显示的Hashmap没有table、size等元素时,查看第19条》 结论 1、链表长度大于8时(插入第9条时),会触发树化(treeifyBin)方法,但是不一定会树化,若数组大小小于…

1、本人博客《HashMap、HashSet底层原理分析》
2、本人博客《若debug时显示的Hashmap没有table、size等元素时,查看第19条》

结论

1、链表长度大于8时(插入第9条时),会触发树化(treeifyBin)方法,但是不一定会树化,若数组大小小于64时,则会先扩容。
2、假设扩容后该链表重新计算Hash后还是放在同一个数组下标时,则会出现链表长度大于8时,未树化的情况。

jdk8源码(treeifyBin)

final void treeifyBin(Node<K,V>[] tab, int hash) {int n, index; Node<K,V> e;// MIN_TREEIFY_CAPACITY = 64// 链表长度小于64时会优先扩容if (tab == null || (n = tab.length) < MIN_TREEIFY_CAPACITY)resize();else if ((e = tab[index = (n - 1) & hash]) != null) {TreeNode<K,V> hd = null, tl = null;do {TreeNode<K,V> p = replacementTreeNode(e, null);if (tl == null)hd = p;else {p.prev = tl;tl.next = p;}tl = p;} while ((e = e.next) != null);if ((tab[index] = hd) != null)hd.treeify(tab);}
}

测试源码(大于8时,未树化)

import java.util.HashMap;
import java.util.Objects;public class HashmapTest {public static void main(String[] args) {HashMap<User,User> hashMap = new HashMap<>();// 同一链表插入8条for (int i = 0; i < 8; i++) {hashMap.put(new User("张三", 18),new User("张三", i));}// 插入第九条,链表长度大于8,会进入treeifyBin树化方法,但是未树化,会执行扩容方法// 默认数组大小16扩容到32// 链表长度变成了9个Node节点,并非红黑树hashMap.put(new User("张三", 18),new User("张三", 9));// 插入第10条,链表长度大于8,会进入treeifyBin树化方法,但是未树化,会执行扩容方法// 数组大小由32扩容到了64// 链表长度变成了10个Node节点,并非红黑树hashMap.put(new User("张三", 18),new User("张三", 10));// 插入第十一条时树化// 数组容量还是64未触发扩容// 链表变成红黑树,节点由Node变成TreeNodehashMap.put(new User("张三", 18),new User("张三", 11));}
}// 重写hashCode方法,保证值一样是hashcode是一样的,可以使值一样的对象出现在同一链表上
class User{private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public User(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}

插入第九条时的Hashmap
插入第十条时结果是一样的,只是数组扩容到了64
1、数组长度扩容到了32
2、Hashmap中保存了9个数据,均在同一条链表
3、节点为Node节点,并不是treenode(红黑树)
在这里插入图片描述
插入第十一条时的Hashmap
1、数组大小为64
2、节点变成了treenode(红黑树)
在这里插入图片描述

测试源码(大于8时,树化)

初始化Hashmap时,直接大于等于64,则同一个链表插入第九条时直接执行了树化。
treeifyBin方法中只有数组长度小于64时才会执行扩容方法,否则则是树化

// 初始化大小,其他同上,插入第九条时,节点就变成了treenode
HashMap<User,User> hashMap = new HashMap<>(64);

插入第九条时的Hashmap
1、数组大小为64
2、节点变成了treenode(红黑树)
在这里插入图片描述

http://www.khdw.cn/news/40280.html

相关文章:

  • 做淘宝客网站需要什么要求独立站网站
  • 郑州seo网络推广标题关键词优化技巧
  • 厦门手机网站建设方案企业站seo
  • 苏州艺术家网站建设互联网舆情监控系统
  • 学习建网站seo研究中心好客站
  • wordpress主题开发层级哪里有seo排名优化
  • 外包做网站不满意网络营销公司经营范围
  • 网络搏彩网站做代理厦门seo推广优化
  • 最佳配色网站网络推广产品要给多少钱
  • 网站开发者工具解读怎么把网站排名排上去
  • 杭州网站建设有限公司产品营销策划方案3000字
  • 做网站认证违法吗2345网址导航怎么下载
  • 培训学校类网站建设方案网站不收录怎么办
  • 中国铁建华南建设有限公司网站厦门站长优化工具
  • 装修公司哪家口碑最好搜索排名优化
  • 连云港做鸭网站论述搜索引擎优化的具体措施
  • 王店镇建设中学网站seo营销策划
  • 网站是做后台好还是做前台好东莞关键词优化软件
  • 网络设计实验报告搜索引擎优化论文3000字
  • 网站建设成交话术网站如何做seo推广
  • 河南省建设厅网站官网永久免费跨境浏览app
  • 做响应式网站的微博号上海小红书seo
  • 设计网页价格网站seo外链建设
  • 带产品多用户商城seo是什么
  • 给公司做网站要花多钱站长工具无忧
  • 企业网站定制收费标准百度教育官网
  • 威海建设集团网站推广方案是什么
  • 网站一起做网店怎么把平台推广出去
  • 网站维护要多久时间济南seo排名优化推广
  • 如何做网站开发seo优化网站网页教学