java - 自定义对象的ArrayList

标签 java class for-loop arraylist

我有一个简单的类,只有一个字符串字段,并且有 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/

相关文章:

ios - 如何在Parse中获取用户的FB ID?我可以访问AuthData吗?

java - 立即启动并在一定时间间隔后运行的 cron 触发器

c++ - 如果我声明一个指针,类的指针成员会发生什么情况?

java - 空大括号/大括号在 Java 中是什么意思?

CSS 不同类

java - Java 中是否可以仅在一个输出中显示 for 循环的结果?

bash - 在 for 循环中将变量传递给 sed

c - 如何在 C 中为两个 for 循环编写 SSE 指令?

java - Web服务中请求的多种内容类型

java - 静态内部类 - 奇怪