2012-05-10 52 views
0

我有一个arraylist,由于某些原因,它覆盖了所有以前的值,只返回最后一个值。所以我有3个对象添加,将有3倍的数组中的最后一个对象。下面的代码:(抱歉的变量不是英语):Arraylist填写lastValue我补充

public class Convertor { 
ArrayList<ArrayList<String>> hervormen = new ArrayList<ArrayList<String>>(); 
String Voornaam; 
public Convertor(ArrayList<ArrayList<String>> hervormen) 
{ 
    this.hervormen=hervormen; 
} 
public ArrayList<HervormdeRij> Hervormen(){ 
    ArrayList<HervormdeRij> hervormd = new ArrayList<HervormdeRij>(); 
    HervormdeRij HervormdeRij = new HervormdeRij(); 
    int teller = 0; 
    ArrayList<String> rij = new ArrayList<String>(); 
    while (teller < hervormen.size()){ 
     rij= hervormen.get(teller); 

     HervormdeRij.setDag(rij0(rij)); 
     HervormdeRij.setUur(rij1(rij)); 
     HervormdeRij.setDokterId(rij2DokterId(rij)); 
     HervormdeRij.setDuur(rij2Duur(rij)); 
     HervormdeRij.setAchternaam(rij5(rij)); 
     HervormdeRij.setVoornaam(Voornaam); 
     HervormdeRij.setAdress(rij6(rij)); 
     HervormdeRij.setGemeente(rij7(rij)); 
     HervormdeRij.setTel(rij8(rij)); 
     HervormdeRij.setCommentaar(rij10(rij)); 
     HervormdeRij.setEmail(rij11(rij)); 


     hervormd.add(HervormdeRij); 

     teller++; 
    } 



    return hervormd; 

所以 “hervormd” 始终是2000次最后的 “HervormdeRij”( “hervormen” .size()的量)。我在代码中看不到错误? (而我1000%肯定“hervormen”!=相同的值的2000倍。)

由于提前

+0

仍然不能理解的问题。 –

+0

您的示例代码是否正确?它看起来像实例变量是类名相同,你调用类的静态方法,而不是实例方法。 –

回答

6

你需要移动HervormdeRij HervormdeRij = new HervormdeRij();内环路,或者你能不能让每一次添加相同的对象:

ArrayList<String> rij = new ArrayList<String>(); 
while (teller < hervormen.size()){ 
    HervormdeRij HervormdeRij = new HervormdeRij(); 
    rij= hervormen.get(teller); 
    ... 
+0

谢谢! :) 我不知道。 – Nick

3

你只实例(前环)一个HervormedeRij对象和你重用每次。

所以你只需要移动这条线:

HervormdeRij HervormdeRij = new HervormdeRij(); 

内循环。

1

在将数组添加到数组中之前,您必须初始化对象的新实例。另外,尽量不要定义与类名的变量,我改变了HervormdeRij变量的名称hervormdeRij

public ArrayList<HervormdeRij> Hervormen(){ 
    ArrayList<HervormdeRij> hervormd = new ArrayList<HervormdeRij>(); 
    HervormdeRij hervormdeRij; 
    int teller = 0; 
    ArrayList<String> rij = new ArrayList<String>(); 
    while (teller < hervormen.size()){ 
     rij= hervormen.get(teller); 
     hervormdeRij = new HervormdeRij(); 
     hervormdeRij.setDag(rij0(rij)); 
     hervormdeRij.setUur(rij1(rij)); 
     hervormdeRij.setDokterId(rij2DokterId(rij)); 
     hervormdeRij.setDuur(rij2Duur(rij)); 
     hervormdeRij.setAchternaam(rij5(rij)); 
     hervormdeRij.setVoornaam(Voornaam); 
     hervormdeRij.setAdress(rij6(rij)); 
     hervormdeRij.setGemeente(rij7(rij)); 
     hervormdeRij.setTel(rij8(rij)); 
     hervormdeRij.setCommentaar(rij10(rij)); 
     hervormdeRij.setEmail(rij11(rij)); 

     hervormd.add(HervormdeRij); 
     teller++; 
    } 

    return hervormd; 
} 
1
  • 重命名为不引起与其他代码读取混乱。 HervormdeRij HervormdeRij = new HervormdeRij();变成HervormdeRij hr = new HervormdeRij();

  • 将它移动到while()循环中,以便每次都会得到类型为HermorvdeRij的新实例。

1

尝试在每次迭代中实例化一个新的HervormdeRij。所以它看起来像这样:

public ArrayList<HervormdeRij> Hervormen(){ 
    ArrayList<HervormdeRij> hervormd = new ArrayList<HervormdeRij>(); 
    HervormdeRij HervormdeRij; 
    int teller = 0; 
    ArrayList<String> rij = new ArrayList<String>(); 
    while (teller < hervormen.size()){ 
     HervormdeRij = new HervormdeRij(); 
     rij= hervormen.get(teller); 

     HervormdeRij.setDag(rij0(rij)); 
     HervormdeRij.setUur(rij1(rij)); 
     HervormdeRij.setDokterId(rij2DokterId(rij)); 
     HervormdeRij.setDuur(rij2Duur(rij)); 
     HervormdeRij.setAchternaam(rij5(rij)); 
     HervormdeRij.setVoornaam(Voornaam); 
     HervormdeRij.setAdress(rij6(rij)); 
     HervormdeRij.setGemeente(rij7(rij)); 
     HervormdeRij.setTel(rij8(rij)); 
     HervormdeRij.setCommentaar(rij10(rij)); 
     HervormdeRij.setEmail(rij11(rij)); 


     hervormd.add(HervormdeRij); 

     teller++; 
    } 
}