如何使此功能更有效? - Java的
绝望,找出我怎样才能使我的功能更有效。这是我现在有如何使此功能更有效? - Java的
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函数。任何提示或指针,非常感谢。谢谢
你addAll
方法是无效的:有机会,它会多次调整底层集合完成之前。
您可以通过在addAll
中添加正在添加的集合的大小,调整大小以适合其所有元素,然后继续进行复制来消除不必要的大小调整。实现这个
的一个方法是添加改变大小的方法,它采用新的大小:
protected void resizeTo(int newSize)
您resize()
方法然后将通过resizeTo
protected void resize() {
resizeTo(Math.max(2 * n,1));
}
我调整大小功能已经由调整大小的阵列(Math.max(2 * N,1))虽然。除非我监督的东西 – johnnyboyyy 2014-10-19 23:37:29
@johnnyboyyy我的意思是,'addAll'方法应该()'与循环继续之前被调整为'N + c.size。 – dasblinkenlight 2014-10-19 23:47:42
HTTP的呼叫覆盖:// codereview.stackexchange.com/ – Reimeus 2014-10-19 23:14:45
你有什么证据证明这段代码效率低下? – 2014-10-19 23:21:53
教授的效率提交服务器说它效率不高。 – johnnyboyyy 2014-10-19 23:26:45