gpt4 book ai didi

Java 复制构造函数 ArrayLists

转载 作者:搜寻专家 更新时间:2023-11-01 04:06:13 25 4
gpt4 key购买 nike

考虑到对象是可变的,我正在尝试创建一个复制构造函数。我的复制构造函数是错误的;我似乎无法弄清楚我做错了什么。

请不要告诉我使用clone()。在这种情况下我将如何完成复制构造函数?我是 Java 的新手,非常感谢任何帮助。

public class MyList {


public ArrayList<Cool> people;

/**
* "people" variable as a new (empty) ArrayList of Cool objects.
*/
public MyPersonList()
{
people = new ArrayList<Cool>(0);
}


/**
* A copy constructor which makes the right kind of copy considering
* a Cool is mutable.
*/
public MyList(MyList other)
{
people = new ArrayList<Cool>();

for(Cool p:people)
{
people.add(p);
}

}

最佳答案

注意:克隆列表与克隆列表中的元素不同。

这些方法都无法按照您希望的方式工作:

//1
people = new ArrayList<Cool>(other.people);

//2
people = new ArrayList<Cool>();
for(Cool p : other.people) {
people.add(p);
}

上述方法将填充 people,使其包含与 other.people 相同的元素。

但是,您不希望它包含相同的元素。你想用 other.people 中元素的克隆来填充它。

最好的方法是这样的:

people = new ArrayList<Cool>(other.people.size());
for(Cool p : other.people) {
people.add((Cool)p.clone());
}

确保 Cool 实现了 Cloneable。如有必要,覆盖 clone()

关于Java 复制构造函数 ArrayLists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com