【发布时间】:2020-09-08 09:18:04
【问题描述】:
例如
int[] test = new int[]{1,2,3};
我想克隆它(深拷贝)
int[] another = test.clone();
Java 在这里真正做什么?是单独复制所有元素 (O(n)) 还是别的?
【问题讨论】:
-
你认为这应该不是O(n)?
-
参考Object#clone的文档。 docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--
-
或者你可以查看源代码。
-
@user809495 好吧,如果你克隆一个数组,你必须至少读取每个元素一次。你不能用一些聪明的算法跳过一些元素的阅读。如果你想克隆一个元素,你必须阅读它,不管如何。这本质上是 O(n)。
-
那么做 int[] another = test.clone() 和做 int[] another = test 一样吗?