Reputation: 575
i have an arraylist, and for some reasons it overwrites all previous values and only returns the last value added. So i have 3 objects to add, there will be 3 times the last object in the array. Here's the code: (sorry the variables aren't english):
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;
So "hervormd" is always 2000 times(the amount of "hervormen".size()) the last "HervormdeRij". I really don't see an error in my code? (And I Am 1000% sure that "hervormen" != 2000 times the same value.)
Thanks in Advance
Upvotes: 0
Views: 144
Reputation: 1991
Try to instantiate a new HervormdeRij in each iteration of the while. So it would look like this:
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++;
}
}
Upvotes: 1
Reputation: 106498
Rename the as to not cause confusion with other code reading. HervormdeRij HervormdeRij = new HervormdeRij();
becomes HervormdeRij hr = new HervormdeRij();
.
Move it inside of your while()
loop, so that every time through, you get new instances of type HermorvdeRij
.
Upvotes: 1
Reputation: 85789
You must initialize a new instance of your object before adding it in the array. Also, try to not define a variable with the class name, I changed the name of HervormdeRij
variable to 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;
}
Upvotes: 1
Reputation: 116287
You only instantiate one HervormedeRij
object (before the loop) and you reuse that every time.
So you just need to move this line:
HervormdeRij HervormdeRij = new HervormdeRij();
inside the loop.
Upvotes: 3
Reputation: 328855
You need to move HervormdeRij HervormdeRij = new HervormdeRij();
inside the loop, or you will keep adding the same object every time:
ArrayList<String> rij = new ArrayList<String>();
while (teller < hervormen.size()){
HervormdeRij HervormdeRij = new HervormdeRij();
rij= hervormen.get(teller);
...
Upvotes: 6