hashmap源码分析,Hashmap源码

7月25号小米二面高级java开发工程师1自我介绍2问问题集合1、说一下hashmap源码2、hashmap扩容条件3、hashmap负载因子0.75是怎么来的JVM1、说说你怎么理解jvm2、jvm参数,有没有调优过3、eden:s0:s1是多少,jvm启动的时候就是这个比例吗?4、一个对象创建销毁过程,越详细越好。

1、HashMap为什么不安全?

赌气呢,就是写给你看的。女孩子要给男孩点台阶下,下次再哄你,就别那么倔了。有机会给他点暗示吧,会回来找你的。HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。无论做什么事,都要先考虑自己是否能那个本事去挑大梁,所以不要高估了自己,也不要瞧不起别人。

HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发resize扩容操作,扩容操作中,在多线程的环境下,存在同时其他的元素也在进行扩容过程的put操作,可能会导致原来的链表形成一个循环链表,然后进行get操作时就可能引起死循环(cpu100%)版权声明:本文为CSDN博主「小码哥222」的原创文章,遵循CC4.0BYSA版权协议,转载请附上原文出处链接及本声明。

2、HashMap是什么东西

java数据结构HashMap一直以来似乎都有一个错觉,认为map跟其他的集合类一样继承自Collection,其实不然,Map和Collection在结构层次上是没有任何关系的,通过查看源码可以发现map所有操作都是基于keyvalue对,而不是单独的元素。下面以HashMap为例子,深入对Map的实现机制进行了解,在这个过程中,请打开jdk源码。

3、2.hashmap和hash-table的区别

第一个区别就先来说说继承关系吧如果你baidu一下,会发现网上的大致说法与“由于Java发展的历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现。”相同。这种说法没有错,但是不够准确,特别是对于我们这种大众菜鸟来说,如果不去深究的话,可能就会造成一些理解上的差异。

我们可以参考一下最新的JDK1.6的源码,看看这两个类的定义:publicclassHashtableextendsDictionaryimplementsMap,Cloneable,java.io.Serializable{…}publicclassHashMapextendsAbstractMap