急切地想知道如何让我的功能更有效率。这就是我现在所拥有的
public boolean addAll(int i, Collection<? extends T> c) {
for (T x : c)
add(i++, x);
return true;
}
public void add(int i, T x) {
if (n + 1 > a.length) resize();
System.arraycopy(a, i, a, i+1, n-i);
a[i] = x;
n++;
}
protected void resize() {
T[] b = f.newArray(Math.max(2 * n,1));
System.arraycopy(a, 0, b, 0, n);
a = b;
}
我不确定我还能做些什么来实现更有效的方式来使用我的addAll函数。非常感谢任何提示或指示。谢谢
答案 0 :(得分:1)
您的addAll
方法效率低下:可能会在完成之前多次调整基础集合的大小。
您可以通过在addAll
中添加集合的大小,调整大小以适应其所有元素,然后继续复制来消除不必要的大小调整。
实现此目的的一种方法是添加一个采用新大小的调整大小方法:
protected void resizeTo(int newSize)
resize()
resizeTo
方法
protected void resize() {
resizeTo(Math.max(2 * n,1));
}