sábado, 23 de agosto de 2014

Java - ArrayList


    O ArrayList é uma classe do Java a qual lhe dá a possibilidade de armazenar valores em forma de lista em sua estrutura, esses valores podem ser inteiros, double , char, boolean inclusive referências de Objetos. Alguns métodos muito usados dessa classe são:
  • add(valor a ser adicionado); //adiciona um valor no ArrayList
  • size();  // retorna o tamanho do ArrayList
  • getIndexOf(valor que deseja saber o índice);  // retorna o indice do valor que você quer dentro do ArrayList
  • contains(valor que deseja verificar); // retorna true se o valor que você passou existe dentro do ArrayList
  • remove(valor a ser removido// este método remove o valor  que você passar através do valor ou índice do valor

    Para melhor entendimento vamos ver um exemplo abaixo de como criar um ArrayList do tipo String , ou seja, todos os valores que estiverem nesse ArrayList terão que ser do tipo String. Vejamos abaixo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
   // cria o objeto ArrayList ( é o tipo de dado )
    ArrayList nomes = new ArrayList<>();
    //Aqui adicionamos os valores na lista
    nomes.add("Renan");
    nomes.add("José");
    nomes.add("Maria");
    nomes.add("João");

    //percorro todos os itens da lista com um for
    for (String n : nomes) {

   //pego o indice de e nome de n cada iteracao do for
   System.out.println(nomes.indexOf(n)+"º nome = "+n);

  }
    //com o metodo do Arraylist size pego o tamanho da lista
    System.out.println("A lista tem "+nomes.size()+" itens");

 }


A saída será: 

0º nome = Renan 

1º nome = José 

2º nome = Maria 

3º nome = João 

A lista tem 4 itens


     Como mostrado acima é muito fácil e útil usar o ArrayList, no exemplo eu crie o ArrayList<String> onde o que fica entre os sinais <> é o tipo do valor , depois eu adicionei cada nome (String) em uma posição do ArrayList sabendo que a primeira posição do ArrayList é 0 a segunda 1 e assim sucessivamente.    

 Cada vez que utilizamos o método add() nós adicionamos o valor na seguinte posição vazia do ArrayList, no exemplo acima o primeiro valor foi “Renan” e foi alocado na posição 0 do ArrayList o segundo valor foi “José” que foi alocado na segunda posição do ArrayList e assim a cada vez que chamarmos o método add() será alocado um valor na próxima posição vazia do ArrayList;   E se quiséssemos remover um desses nomes do ArrayList como faríamos? Veja no exemplo abaixo



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void main(String[] args) {
   // cria o objeto ArrayList ( é o tipo de dado )
    ArrayList nomes = new ArrayList<>();
    //Aqui adicionamos os valores na lista
    nomes.add("Renan");
    nomes.add("José");
    nomes.add("Maria");
    nomes.add("João");

    //Aqui eu vou remover através do indice
    nomes.remove(3);

    //Aqui eu vou remover através do valor que adicionei anteriormente
    nomes.remove("Maria");

    //percorro todos os itens da lista com um for
    for (String n : nomes) {

   //pego o indice de e nome de n cada iteracao do for
   System.out.println(nomes.indexOf(n)+"º nome = "+n);

  }
    //com o metodo do Arraylist size pego o tamanho da lista
    System.out.println("A lista tem "+nomes.size()+" itens");

 }

A saída será:             

0º nome = Renan 
1º nome = José 
A lista tem 2 itens 

    Observe que eu removi os valores usando o mesmo método pois ele é sobrecarregado ou seja dependendo do argumento que você passar ele vai se comportar de uma maneira diferente sendo que como passei no primeiro caso o índice 3 que era “João” o método procurou dentro do ArrayList o valor que estava naquele índice.

    No segundo caso eu removi os valores usando o próprio valor que eu havia adicionado antes e o método conferiu se no Array existia esse valor e quando verificou que sim ele simplesmente removeu o valor.