Inserting items into an ArrayList does not work as expected

0

I need to add an item to the list 9 times, except that when I print, only the 12 , "Oi", "Aline" data appears. What am I doing wrong?

package webservice;

import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
public class LivroResource{

public static void main(String[] args) {

    int i = 10;
    List<Livro> livros = null;
    Livro livro;
    while(i != 0){

        livros = new ArrayList<>();
        livro = new Livro();

        livro.setId(12);
        livro.setTitulo("Oi");
        livro.setAutor("Aline");
        livros.add(livro);
        i--;
        System.out.println(i);

    }

    for(Livro biblioteca : livros){

    System.out.println(biblioteca.getId());
    System.out.println(biblioteca.getAutor());
    System.out.println(biblioteca.getTitulo());
    }
  }
}
    
asked by anonymous 15.07.2016 / 14:43

1 answer

5

Remove this line from the loop, each iteration, you are creating a new list and deleting the previous one:

  livros = new ArrayList<>();

Leave it like this:

public static void main(String[] args) {

    int i = 10;
    List<Livro> livros = new ArrayList<>();
    Livro livro;
    while(i != 0){

        livro = new Livro();

        livro.setId(12);
        livro.setTitulo("Oi");
        livro.setAutor("Aline");
        livros.add(livro);
        i--;
        System.out.println(i);

    }

    for(Livro biblioteca : livros){

    System.out.println(biblioteca.getId());
    System.out.println(biblioteca.getAutor());
    System.out.println(biblioteca.getTitulo());
    }
  }
}

I believe that the condition of the loop, although working, is not the most appropriate for the situation, since you want to fill 10 positions in a decreasing way. while(i > 0) has the same effect and makes the code more understandable.

    
15.07.2016 / 14:45