我对下面的说法有的问题:
如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,
List是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。如果, 我要是 增加List是原来的50% 可以修改我 增加List是原来的70% 这样的方法或别的什么不?
如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,
List是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。如果, 我要是 增加List是原来的50% 可以修改我 增加List是原来的70% 这样的方法或别的什么不?
/**
* Increases the capacity of this <tt>ArrayList</tt> instance, if
* necessary, to ensure that it can hold at least the number of elements
* specified by the minimum capacity argument.
*
* @param minCapacity the desired minimum capacity
*/
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1; //增加多大?就是这么大。
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
这个是它底层实现的扩容算法,API中没有提供修改的方法。
不就可以了