我有一個簡單的類只有一個字符串字段,我有ArrayList。 當我做循環添加一些元素到ArrayList奇怪的事情發生。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
很大,則需要太多內存。謝謝
您只是在進入循環之前創建相同的'mc',並重復將其添加到列表中。因此畢竟它包含多個對一個對象(仍然是'mc')的引用,它具有'string'屬性作爲最新賦值。 –