
Java
mengyue000
这个作者很懒,什么都没留下…
展开
-
白话讲hashMap
学了几天hashmap,收获很大。但是我想用自己的大白话说一边。各位看官仔细看,有不对还请提出。感激不尽!如果你能找到本文的疏漏之处,说明你对hashmap有了更深的理解;说起hashMap的时候。必须提一下hashtable,因为hashmap是hashtable的轻量级实现,他继承了hashtable除了多线程方面的几乎所有的内容,并且hashmap在单线程的效率比ha原创 2017-08-24 10:55:18 · 1130 阅读 · 0 评论 -
java中hashCode()与equals()的绑定联系
总结:(1)绑定。当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。(2)绑定原因。Hashtable实现一个哈希表,为了成功地在哈希表中存储和检索对象,用作键的对象必须实现 hashCode 方法和 equals 方法。同(1),必须保证equals相等的对象,hashCode 也原创 2017-08-23 21:34:08 · 800 阅读 · 0 评论 -
Enumeration与Iterator对比
Enumeration的速度是Iterator的两倍,也使用更少的内存。Enumeration是非常基础的,也满足了基础的需要。但是,与Enumeration相比,Iterator更加安全,因为当一个集合正在被遍历的时候,它会阻止其它线程去修改集合。原创 2017-08-23 21:16:35 · 871 阅读 · 0 评论 -
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 评论 -
jdk1.8对于HashMap碰撞处理的优化-引入红黑树
jdk1.8对于HashMap碰撞处理的优化-引入红黑树 在2014年,jdk1.8发布。Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。好~下面就开始分析源码。原创 2017-08-23 11:52:09 · 3206 阅读 · 0 评论