ensureCapacitymethod在列表中创建更多空间,以便可以将更多元素添加到列表中。该方法的问题在于它可能在列表中创建间隙。我该如何解决这个差距呢?
public class UnboundedList<K extends Comparable<K>,V> extends SimpleBoundedList<K,V> {
public UnboundedList(int bound) {
super(bound);
}
@Override
public boolean add(K key, V value) {
ensureCapacity();
super.add(key, value);
return true;
}
private void ensureCapacity() {
if (this.size() == this.values.length) {
Object[] newArray = new Object[values.length * 2];
for (int i = 0; i < values.length; ++i) {
newArray[i] = values[i];
}
this.values = newArray;
}
}
}
答案 0 :(得分:0)
您必须确保列表的大小能够在添加之前补偿增加的值。
public final void onEnsureCapacity(final Object[] pObjects) {
if((this.getSize() + pObjects.length) > this.getValues().length) {
/* Resize to accommodate. */
}
}
这段代码的作用是检查当前的虚拟&#39;列表的大小加上要添加到列表的数组的大小大于当前大小,我们必须选择适合两者的数组大小。