2016-09-22 7 views
0

문제의 근원이라고 생각되는 코드의 일부를 넣었으나 지금은 왜 StackOverFlow에 있는지 알 수 없습니다. 어쨌든이 클래스는 내 데이터를 설정하고 배열로 전달하는 곳입니다.배열 결과 마지막 결과 얻기 계속

public ArrayList<select.rates> caseGetRates() throws RateTableException, SessionDisconnectedException { 

    try { 
     for(int i=0;i < arrayRate.size();i++){ 
      ArrayList<select.rates> arr = new ArrayList<select.rates>(); 
      this.setPair(array[0]); 
      this.setBid((array[2])); 
      this.setAsk((array[3])); 
      arr.add(this); 
     } 
     return arr; 
     } finally{} 
} 

내가이 클래스에 설정된 데이터를 System.out.print 때 저를 제공합니다 정확하고 내가이를 통과 할 때 내 webpage.However에 표시 할 내용

EUR/USD 
1.12372 
1.12384 

USD/JPY 
100.622 
100.641 

Servlet

try { 
    ArrayList<select.rates> rates = example.caseGetRates(); 

    for(int i=0;i < rates.size();i++){ 
     System.out.println(""); 
     System.out.println(rates.get(i).getPair()); 
     System.out.println(rates.get(i).getBid()); 
     System.out.println(rates.get(i).getAsk()); 
    } 
    request.setAttribute("rates", rates); 
} 
request.getRequestDispatcher("/NewFile.jsp").forward(request, response); 

내 서블릿에서 얻을 결과 데이터는 다음과 같습니다

USD/JPY 
100.622 
100.641 

USD/JPY 
100.622 
100.641 

결과가 두 번 반복되지만 데이터가 덮어 써진 것처럼 보입니다. 왜 이런 일이 발생하는지 아직 알 수 없습니다. 누군가 내 실수를 지적 할 수 있기를 바랍니다.

+2

을 위해 ArrayList 추가되는 새로운 객체를 생성 ''arr.add (this);''를 사용하여 여러 번. – f1sh

+0

arr 로컬 변수의 범위를 확인하십시오. for 루프 외부에 있어야 반환 할 수 있습니다. 또한 이것에 대한 새로운 객체를 만들고 그것을 설정하고 Arraylist에 추가하십시오. –

+0

자바의 핵심 기본 사항에 대해 학습하고 학습하십시오. ** 같은 ** 객체를 일부 콜렉션에 반복해서 추가하면 어떻게됩니까? JSP 나 서블릿에 지나친 부담을 느끼지 마십시오. 여러분이 * this *를 사용할 때 일어나는 일을 이해하지 못할 때도 있습니다. – GhostCat

답변

0

루프

에 대한 외부 ArrayList 객체를 생성하고 내부 루프 당신은 당신이 동일한 개체를 수정 (``this``) 한 후 여러 추가

try { 
    ArrayList<select.rates> rates = example.caseGetRates(); 

    for(int i=0;i < rates.size();i++){ 
     // create new object here and then add to ArrayList 
    } 
    request.setAttribute("rates", rates); 
} 
    request.getRequestDispatcher("/NewFile.jsp").forward(request, response);