java - 使用 Java 中的构造函数进行深复制

标签 java arraylist deep-copy

我正在使用以下方法说明: 构造函数 publicProgrammingTeam(ProgrammingTeam p),它采用 编程团队将 p 作为参数并构造 p 的深拷贝。不要只写满足= p. 满足;。要进行深拷贝,必须调用ArrayList的拷贝构造函数:metes = new ArrayList();.

  public ProgrammingTeam( ProgrammingTeam p ) {
    teamName = p.teamName;
    teamMembers = new String [ p.teamMembers.length ];
    for (int i = p.teamMembers.length - 1; i >= 0; i--) {

    }
    meets = new ArrayList < Competition >();
}

我无法确切地弄清楚我应该如何撰写然后完成深度复制。我知道需要一个 for 循环来实际复制每个对象,但我不知所措,谢谢!

最佳答案

关于字符串数组...

字符串是不可变的,因此只需复制数组就足够了,例如使用 Arrays.copyOf()使用方法:

teamMembers = Arrays.copyOf( p.teamMembers, p.teamMembers.length );
<小时/>

至于列表,这取决于......

如果竞争immutable ,使用ArrayList的复制构造函数:

meets = new ArrayList<Competition>(p.meets);

如果Competition是可变的,您需要调用它的复制构造函数(如果需要的话定义它)。

meets = new ArrayList<Competition>();
for (Competition c : p.meets) {
    meets.add(new Competition(c));
}

关于java - 使用 Java 中的构造函数进行深复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962263/

相关文章:

java - 访问数组列表中的元素时出错

java - 创建父类(super class)数组,同时维护多态属性

java - 如何对 Java ArrayList 进行深拷贝

python - pickle 和 deepcopy 的关系

java - Hibernate 是否支持并发获取数据?

java - split方法如何计算数组

java - 查找圆环图中心的大小 - achartengine

java - 具有两种类型的Arraylist : how to determine the first type?

java - 深度克隆 Java 对象(不是 bean)

java - 从 JButton 的 actionListener 关闭 JFrame