Java 中克隆方法的时间复杂度?

Time complexity of clone method in Java?

Java中的每个对象都有 clone() 方法。

克隆方法在以下条件下的时间复杂度是多少:

  1. 默认实现,不要覆盖 clone()。
  2. Ojbect 包含 n 个字段。

我只是猜测内置克隆方法是否使用某种技术将时间复杂度降低到 O(1)。

基本克隆方法是浅层复制。这意味着它会克隆对象中的所有值和引用,但不会克隆“子”对象,例如数组和引用对象。为此,您需要 deep 副本。

要创建一个 deep 副本,您必须覆盖克隆方法并自己编写一个实现,或者利用一些使用反射递归遍历所有成员的克隆库.

浅克隆操作本质上是O(1)。如果你想谈论 O(n),那就是克隆对象集合。从 Big O 的角度来看,计算字段数没有意义,因为给定对象的字段数 不会变化。 换句话说,给定对象的克隆总是占用相同的数量执行(或多或少)的时间(恒定时间)。

进一步阅读
Clone() method in Java