如何修复列表中的差距?

时间:2015-02-08 23:49:10

标签: java arraylist

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

}

}

1 个答案:

答案 0 :(得分:0)

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

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

这段代码的作用是检查当前的虚拟&#39;列表的大小加上要添加到列表的数组的大小大于当前大小,我们必须选择适合两者的数组大小。