Java 集合扩容概括

参考博文:

java集合的扩容机制_这个名字先用着的博客-CSDN博客

# ArrayList

可随着元素的增长而自动扩容,正常扩容的话,每次扩容到原来的 1.5倍

# ArrayList 和Vector扩容机制总结:

ArrayList 和Vector,底层都是Object数组,

默认加载因子都是:1(元素满了才扩展容量).

默认容量都是:10(但是ArrayList 在jdk1.8时默认为空,当添加元素时,才初始化为10个容量。)

ArrayList:新容量为原容量的 1.5倍,Vector:新容量为原容量的 2倍.

# HashSet和HashMap扩容机制总结:

HashSet和HashMap都是默认初始容量是16(jdk1.7的),但是jdk1.8做了优化,初始容量为0,第一次存元素的时候才扩容为16

加载因子是:0.75

扩容为原来的:2倍

# Hashtable

默认初始容量 11

扩容加载因子 0.75(当超出默认长度(int)(11*0.75)=8时,扩容为 oldx2+1新容量为原容量的2倍+1. 【int newCapacity = (oldCapacity << 1) + 1;】

# StringBuilder和StringBuffer

初始容量都是:16 ,程序猿尽量手动设置初始值。以避免多次扩容所带来的性能问题。

默认数组容量扩充为原数组容量的 2倍+2。

# 没有扩容机制:

LinkedList:没有扩容机制,因为其底层是双向链表结构

LinkedHashSet,TreeSet没有数组的扩容机制。

你可能感兴趣的:(interview,java)