У меня есть простой класс с одним строковым полем, и у меня есть 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' как последнее назначенное. –