美文网首页容器编程学习
Java的HashMap一层一层深入

Java的HashMap一层一层深入

作者: KaelQ | 来源:发表于2016-09-11 21:19 被阅读108次

1.HashMap结构图

2.问题依次深入

  • 什么是HashMap,它的特性是什么?
    答:
    HashMap由数组和多个LinkedList组成。
    HashMap可以存键值对。
HashMap<T,T> hashmap=new HashMap<T,T>();//声明
hashmap.put(T,T);//放入键值对
hashmap.get(T);//获取值
  • HashMap和HashTable的区别
    HashMap可以存储键值为Null的值。
    HashTable不能存储键值为Null的值。
    HashMap是非同步的,是线程不安全的。
    HashTable是同步的,是线程安全的。
    HashMap默认大小为16,并且一定为2的指数。
    HashTable默认大小为11,并且增长规律为old*2+1。

  • HashMap的工作是什么原理
    put()方法,先使用hashcode()方法计算key的hashcode,然后根据hashcode找到bucket位置,存储Entry对象,如果hashcode和其他的相同,那么使用Linklist,依次存储entry。
    get()方法,使用hashcode()方法得到key的hashcode,然后遍历LinkedList使用key.equal()找出bucket中的具体entry,最后得到值。

  • 什么HashMap的默认容量和负载因子(load factor)
    默认容量为16,负载因子为0.75。

  • 如果HashMap超过了负载因子,这时候该怎么办?
    调用 rehash方法,将默认容量变为2倍的bucket数组,将原来的bucket数组元素放入心得bucket数组中。

  • 为什么使用Double Integer等wrapper 类当做key比较好。
    wrapper类有不可变性的性质,即放入和取出的hashcode不会改变,而且已经重写了equals和hashcode方法。并且如果两个不相等的对象返回不同的hashcode的话,那么碰撞的几率就会小些,这样就能提高HashMap的性能。

  • 可以使用自定义对象作为key吗?
    可以的,满足两个特性:不可变性和重写两个方法。
    当对象插入到Map中之后将不会再改变了。并且重写equals和hashcode方法即可。

相关文章

  • Java的HashMap一层一层深入

    1.HashMap结构图 2.问题依次深入 什么是HashMap,它的特性是什么?答:HashMap由数组和多个L...

  • 深入理解HashMap

    深入理解HashMap 什么是HashMap HashMap作为Java语言中一种重要的类型,其存储数据通过键值对...

  • HashMap 理解

    参考链接:HashMap原理深入理解java中HashMap原理?面试?你是谁,你在哪 HashMap实际上是一个...

  • Java集合-HashSet源码实现分析

    概要 阅读本文前,请先阅读笔者写的文章:Java集合-HashMap源码实现深入解析理解了HashMap,再来理解...

  • 一层一层的包裹

    前天,大清早接到妹妹的电话,她在生气地哭诉家庭矛盾,父母对老公的不公平对待,她夹在中间又为难又生气。这样的事情不是...

  • 深入剖析 Java7 中的 HashMap 和 Concurre

    本文将深入剖析 Java7 中的 HashMap 和 ConcurrentHashMap 的源码,解析 HashM...

  • 迷雾一层一层

    一. 天色渐渐沉下来,从清早的睁眼到现在,又是稀松的一天,苏小北看着窗外变凉的天,和三月寒风卷下去的隐约可见的树叶...

  • 一层一层剥开

    看题目心里在想,一层一层的剥开有很多:前几年的一首洋葱唱到我一层一层的剥开他的心。还有很多的菜都是一层一层剥开,里...

  • 深入了解HashMap的底层原理

    深入了解HashMap的底层原理 各位java开发的同学肯定对HashMap并不陌生,它是一种非常常见的数据结构,...

  • Java集合框架—HashMap—源码研读-2

    前言: 本篇是HashMap系列的第二篇,上一篇:Java集合框架—HashMap—源码深入分析1 我们主要讲解了...

网友评论

    本文标题:Java的HashMap一层一层深入

    本文链接:https://www.haomeiwen.com/subject/rvyyettx.html