Java 自定义对象的ArrayList

Java 自定义对象的ArrayList,java,class,for-loop,arraylist,Java,Class,For Loop,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.s

我有一个只有一个字符串字段的简单类,还有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);
}
ArrayList list=new ArrayList();
MyClass mc=新的MyClass();

对于(int i=0;i您正在将同一元素重新添加到列表中。请尝试:

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
}
List List=newarraylist(someNumber);

对于(int i=0;i您正在将同一元素重新添加到列表中。请尝试:

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
}
List List=newarraylist(someNumber);

对于(inti=0;i,您需要在循环中移动对象mc的实例化

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


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

对于(inti=0;i,您需要在循环中移动对象mc的实例化

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


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

对于(int i=0;iYou只需对进入循环之前创建的相同的
mc
进行变异,并重复将其添加到列表中。因此,它毕竟包含对一个对象的多个引用(仍然
mc
)最新分配的属性为
string
。您只需对进入循环之前创建的相同
mc
进行变异,并重复将其添加到列表中。因此,它毕竟包含对一个对象的多个引用(仍然是
mc
)它的
string
属性是最新分配的。谢谢。但是如果某个数字像10000,它需要700 MB的ram…还有其他方法吗?@Ђђђааааћ这700 MB是从哪里得到的?我们不知道MyClass有多大。如果你想创建新对象,你必须分配它们我的坏。我忘了从中删除一些导入我的类。谢谢。谢谢。但是如果某个数字像10000,它需要700MB的内存…还有其他方法吗?@我忘了从我的类中删除一些导入。谢谢。