在项目编码时,创建集合的时候,尽量在创建时给定大小,节约资源?你知道为什么吗?有啥好处呢?下面我会就ArrayList、LinkedList、HashMap、HashSet一一介绍。(注:1.8jdk)
- ArrayList
创建ArrayList的构造函数:
- ArrayList(); 不指定大小,默认为0。
- ArrayList(int);
- ArrayList(Collection<? extends E>); 已有集合来new,size为原来集合大小。
如何自动扩容:
在向ArrayList添加数据时,若最开始没有数据,此时默认size为10;此后若新加数据超过size,则自动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 = Arra