Его очень просто, но как-то не работает (странно !!).Java: добавление объектов в список объектов
У меня есть класс класса. Я добавляю объекты в список в цикле for. До добавления объекта все в порядке, но как только я попытаюсь получить доступ к списку, отображаются только значения последнего объекта (см. Вывод, который я привел ниже). Также здесь код:
List<myClass> myClassList = new ArrayList<myClass>();
myClass myClassObj = new myClass();
for(int i=0;i<someArray.length;i++){
myClassObj.setProperty1("value1");
myClassObj.setProperty2("value2");
myClassObj.setProperty3("value3");
...
...Others
...
System.out.println(myClassList.add(myClassObj));////////////////////////
}
System.out.println(myClassList.size());/////////////////////////////////////
for(int i=0;i<myClassList.size();i++){
System.out.println(myClassList.get(i).getProperty1());/////////////////
.....
.....Others
.....
}
Iterator<myClass> mcItr = myClassList.iterator();
while(mcItr.hasNext()){
myClass obj = mcItr.next();
System.out.println(obj.getProperty1());
.....
.....Others
.....
}
выход этой программы (если размер someArray
является):
//'true' --> 5 times. Printed by the 'add' statement as it returns 'true' when everything is OK
//5 --> Size of 'myClassList' this is also OK
//Here the values corresponding to the fifth and the last object are printed and repeated 5 times. Instead of printing each objects value once. (whichever way of printing to console I may use, the result is same).
Здесь я не могу понять, ли я создавать список неправильным способом или доступ к нему неправильным образом.
Прошу совета.
Спасибо!
же класс refrence является виновником –
Вам нужно положить 'MyClass myClassObj = новый MyClass();' внутри первого цикла FOR. Иначе вы просто перезаписываете начальную переменную новыми значениями. – Frankline
@UmeshAwasthi: Я понял. Благодаря!! – kanishk