非常にシンプルですが、どういうわけか機能しません(奇妙です!)。Java:オブジェクトのリストにオブジェクトを追加する
私はクラスタイプのリストを持っています。 forループのリストにオブジェクトを追加しています。オブジェクトを追加するまではすべてOKですが、リストにアクセスしようとすると、最後のオブジェクトの値だけが表示されます(下に示した出力を参照)。
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のMyClassのmyClassObjを();'最初のFORループ内。そうでなければ、最初の変数に新しい値を上書きするだけです。 – Frankline
@UmeshAwasthi:私はそれを得た。ありがとう!! – kanishk