매우 간단하지만 어떻게 든 작동하지 않습니다 (이상한 !!).자바 : 객체 목록에 객체 추가
클래스 유형 목록이 있습니다. 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
의 크기 인 경우 5) : 여기
//'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