1、ArrayList
默认大小为10
private static final int DEFAULT_CAPACITY = 10;
最大容量为2^30 - 8
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; public static final int MAX_VALUE = 0x7fffffff;
扩容规则为:oldCapacity*1.5
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
2、HashMap
默认大小: 16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
最大容量为:2^30
static final int MAXIMUM_CAPACITY = 1 << 30;
扩容规则为:大于oldCapacity的最小的2的n次方整数
void addEntry(int hash, K key, V value, int bucketIndex) {
if ((size >= threshold) && (null != table[bucketIndex])) {
resize(2 * table.length);
hash = (null != key) ? hash(key) : 0;
bucketIndex = indexFor(hash, table.length);
}
createEntry(hash, key, value, bucketIndex);
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对考高分网的支持。如果你想了解更多相关内容请查看下面相关链接



