gpt4 book ai didi

java - 自定义对象的ArrayList

转载 作者:行者123 更新时间:2023-12-01 16:53:37 27 4
gpt4 key购买 nike

我有一个简单的类,只有一个字符串字段,并且有 ArrayList。当我执行 for 循环向 ArrayList 添加一些元素时,发生了一些奇怪的事情。

ArrayList<MyClass> list = new ArrayList<Myclass>();
MyClass mc = new MyClass();

for(int i=0;i<someNumber;i++){
String s = new String(Integer.toString(i));
mc.setString(s);
list.add(mc);
}

此后,当我打印列表时,列表中每个元素的字符串都是相同的。

我明白如果我这样做list.add(new Myclass(s);工作正常,但我需要每次都创建一个新的 MyClass 实例吗?如果someNumber太大需要太多内存。谢谢

最佳答案

您正在将相同的元素重新添加到列表中。尝试:

List<MyClass> list = new ArrayList<>(someNumber);


for(int i=0;i<someNumber;i++){
String s = new String(Integer.toString(i));
MyClass mc = new MyClass(); // create new object mc
mc.setString(s);
list.add(mc); // add the new object to the list
}

同一个对象是指指向该对象的相同指针,您必须创建新指针(初始化新类)以将其作为单独实例添加到列表中。在本例中,您在同一个对象上的 setString 中设置了不同的值,并将列表中的对象相乘。

关于java - 自定义对象的ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777385/

27 4 0