如何修复列表中的差距?

How to fix the gap in the list?

ensureCapacity 方法在列表中创建更多 space 以便可以将更多元素添加到列表中。该方法的问题在于它可能会在列表中造成空白。我该如何弥补这个差距?

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;
    }

}

}

您必须确保列表的大小能够补偿在添加之前添加的值。

public final void onEnsureCapacity(final Object[] pObjects) {
     if((this.getSize() + pObjects.length) > this.getValues().length) {
          /* Resize to accommodate. */
     }
}

这段代码所做的是检查如果当前 'virtual' 列表大小加上要添加到列表中的数组大小大于当前大小,我们必须选择一个数组大小这将容纳两者。