
数据结构
mengyue000
这个作者很懒,什么都没留下…
展开
-
HashMap链表在Java1.7与1.8中的区别
HashMap在Java1.7与1.8中的区别 JDK1.7中 使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hashcollision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。 在hashco转载 2017-08-23 15:47:50 · 1309 阅读 · 0 评论 -
hashMap扩容机制
扩容时空间大小变化: HashMap中,哈希桶数组table的长度length大小必须为2的n次方(一定是合数),这是一种非常规的设计,常规的设计是把桶的大小设计为素数。相对来说素数导致冲突的概率要小于合数,具体证明可以参考http://blog.youkuaiyun.com/liuqiyao_01/article/details/14475159, Hashtable初始化桶原创 2017-08-23 15:46:40 · 2028 阅读 · 0 评论 -
各大排序算法优缺点总结
HashMap中,哈希桶数组table的长度length大小必须为2的n次方(一定是合数),这是一种非常规的设计,常规的设计是把桶的大小设计为素数。相对来说素数导致冲突的概率要小于合数,具体证明可以参考http://blog.youkuaiyun.com/liuqiyao_01/article/details/14475159, Hashtable初始化桶大小为11,就是桶大小设计为素数的应用(H原创 2017-08-23 14:33:25 · 14630 阅读 · 0 评论 -
jdk1.8对于HashMap碰撞处理的优化-引入红黑树
jdk1.8对于HashMap碰撞处理的优化-引入红黑树 在2014年,jdk1.8发布。Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。好~下面就开始分析源码。原创 2017-08-23 11:52:09 · 3206 阅读 · 0 评论 -
简述hash时处理碰撞冲突的集中方法
Hash碰撞冲突我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。 (我只简述,就不细讲了,大家可以去百度)1.开放地址法2.再哈希法3.链地址法(拉链法)4.建立一个公共溢出区最常用的是第三种,拉链法;它的魅力在于:原创 2017-08-23 11:14:54 · 1428 阅读 · 0 评论 -
各大排序算法优缺点对比
我这里只总结各大算法知识的要点,如果你想看看算法思想和实现代码,网上的其他博客都很喜欢贴大段代码和文本,可以自己去看。 (如果出错,请指正!感激不尽!) 一.三大简单、慢速排序算法 平均最好最坏辅助存储稳定性直接插入n^2nn^2原创 2017-08-21 21:26:16 · 13882 阅读 · 0 评论 -
Java中清楚hashmap和hashtable,看了以后立刻明白
hashMap 底层的数据结构是数组+链表学过数据结构的同学都知道,解决hash冲突的方法有很多,HashMap底层是通过链表来解决hash冲突的。图中,紫色部分即代表哈希表,也称为哈希数组,数组的每个元素都是一个单链表的头节点,链表是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就将其放入单链表中。 Java中,hashtable为什么很少使用?原创 2017-08-21 11:31:21 · 1030 阅读 · 0 评论 -
hashtable基础
在网上找了不少的hashtable的资料,总结融汇之后,发一个博客。希望对后来的人有帮助。 如果出错了,欢迎指出啊。感谢前人提供的知识。 基础的知识储备: 1. 假如在数组中知道了某个索引的话,也就知道了该索引位置上的值。同理,在散列表中,我们所要做的就是根据 Key 来知道 Value 在表中的位置。 Key 的作用只不过用来指示位置。而通过 Key 来查找位置,原创 2017-08-18 17:55:17 · 886 阅读 · 0 评论