HashMap和Hashtable的区别和实现原理
HashMap 和 Hashtable 有什么区别?
HashMap是线程不安全的,HashTable是线程安全的;
HashMap中允许键和值为null,HashTable不允许;
HashMap的默认容器是16,为2倍扩容,HashTable默认是11,为2倍+1扩容;
HashMap的实现原理?
1. 简介
HashMap基于map接口,元素以键值对方式存储,允许有null值,HashMap是线程不安全的。
2. 基本属性
初始化大小,默认16,2倍扩容;
负载因子0.75;
初始化的默认数组;
size;
threshold,判断是否需要调整hashmap容量。
3. HashMap的存储结构
JDK1.7中采用数组+链表的存储形式。
HashMap采取Entry数组来存储key-value,每一个键值对组成了一个Entry实体,Entry类时机上是一个单向的链表结构,它具有next指针,指向下一个Entry实体,以此来解决Hash冲突的问题。
HashMap实现一个内部类Entry,重要的属性有hash、key、value、next。
JDK1.8中采用数组+链表+红黑树的存储形式。当链表长度超过阈值(8)时,将链表转换为红黑树。在性能上进一步得到提升。
更多关于“Java培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的好程序员班,高品质课程助力你实现java程序员梦想。