USANDO O ArrayList

Bom dia a todos! Estou tendo um pouco de dificuldade de visualizar e aprender sobre o ArrayList.Alguém poderia me explicar com exemplos práticos dentre outras coisas , por favor!

lembrando que sei que é necessário fazer isto:

Chamada do construtor da classe ArrayList

ArrayList passagem = new ArrayList();

para adicionar um objeto no ArrayList tem que fazer isto , certo?

passagem.add(new classe());

para retornar o valor tenho que fazer um casting visto que o retorno é um objeto , certo?

Nesta parte não estou consiguindo desenrolar…

Abraços a todos e obrigado pela ajuda…

OBs2: Vi um código que era mais ou menos assim

List passagem = new ArrayList();

Qual a diferença de usar este código e o outro?

Muitas perguntas em estrutudas de dados… hhe abraços!

http://www.caelum.com.br/curso/cs-14-algoritmos-estruturas-dados-java/;jsessionid=66E6F5C511A1870368DB1FEA5B0DE830

baixe essa apostila tenho certeza que irá esclarecer as suas duvidas de arrays etc e tals… :wink:

Amigo já dei uma olhada nesta apostila, porém a dúvida ainda prevalece… Sobre o list passagem = new ArrayList();

foi justamente nesta apostila que vi este exemplo.

Você pode me ajudar por favor…

1 curtida

Você precisa fazer o casting apenas se não declarar o tipo da classe que terá no array

ArrayList<String> passagem = new ArrayList<String>();

Desta forma não necessita de casting, pois vc já está informando que será preenchido apenas com classe String

List passagem = new ArrayList(); 

Basicamente vc tera terá acesso apenas aos métodos da interface List, que ArrayList implementa. Caso vc quisesse utilizar um método que ArrayList possui mas que não existe na interface List vc teria que fazer um casting

No Arraylist só é possível adicionar objetos


List lista = new ArrayList();
lista.add(new Carro());
lista.add(new Moto());

for(int i = 0; i < lista.size(); i++ ){
     // a conversão é necessária na hora em que for usar o objeto do ArrayList
     lista.get(i).empinaMoto(); // erro, é um Object até que seja convertido
     Moto moto = (Moto) lista.get(i); // erro, dependendo do objeto que virá 
     if(lista.get(i) instanceof Moto ){ // Operador instanceof verifica se o objeto É-UM tipo Moto
         Moto moto = (Moto) lista.get(i); // faz a conversão segura
         moto.empinaMoto(); //chama o método da classe moto
     }
      if(lista.get(i) instanceof Carro ){
           Carro carro = (Carro) lista.get(i);
           carro.abrePortaMalas();
      }


}

O importante é lembrar que independente do que você colocar no ArrayList() (Carro, Moto, String, Integer) quando você realmente for usar o objeto ele será um Object, então para ter o comportamento especifico da sua classe é preciso converter.

A partir do Java 5 é possivel fazer assim:


ArrayList<Carro> lista = new ArrayList<Carro>();  

lista.add(new Carro()); // só é possível adicionar Carro ao ArrayList


Carro carro = lista.get(0); // a conversão não é necessária

List é uma interface
ArrayList é um implementador dessa interface, ou seja, é um tipo de List

Java 5 trouxe uma solução para esse Cating obrigatório… depois vc pode dar uma olhada…

mas vamos lá…

import java.util.ArrayList;

/**
 *
 * @author aohana
 */
public class ArrayListPessoal {

    static ArrayList aList = new ArrayList();

    public static void main(String[] args) {
        adicionaLista();
        imprimeLista();
    }

    static void adicionaLista(){
        Integer a = new Integer(0);
        Double b = new Double(1.0);
        Boolean c = new Boolean(true);

        aList.add(a);
        aList.add(b);
        aList.add(c);
    }

    static void imprimeLista() {
        for(int i = 0; i<aList.size(); i++){
            System.out.println(aList.get(i));
        }
    }
}

testa isso aí e vê o que acontece…

No segundo caso, vc está se beneficiando do Polimorfismo… List é a Interface que é implementada por todas as coleções que são AlgumaCoisaList

crie uma referência do tipo List e vc poderá receber um objeto de Qualquer classe que implemente List… crie uma referência do tipo ArrayList e vc só vai poder receber um ArrayList…

PS: para fazer o caso, estou usando a JDK 6 Up10

Muitissimo obrigado por toda a ajuda que vocês me deram.Estarei estudando mais estrutura de dados visto que estou com um pouco de dificuldade nesta parte.

Cara esta comunidade é muito boa, obrigado a todos…

Aqui tem um exemplo bastante completo sobre ArrayList:
http://www.guj.com.br/posts/list/74068.java#389435