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!
baixe essa apostila tenho certeza que irá esclarecer as suas duvidas de arrays etc e tals…
thiagolopes1 like
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…
F
fausto
Você precisa fazer o casting apenas se não declarar o tipo da classe que terá no array
ArrayList<String>passagem=newArrayList<String>();
Desta forma não necessita de casting, pois vc já está informando que será preenchido apenas com classe String
Listpassagem=newArrayList();
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
gilmaslima
No Arraylist só é possível adicionar objetos
Listlista=newArrayList();lista.add(newCarro());lista.add(newMoto());for(inti=0; i < lista.size(); i++ ){//aconversãoénecessárianahoraemqueforusaroobjetodoArrayListlista.get(i).empinaMoto(); // erro, é um Object até que seja convertidoMotomoto=(Moto)lista.get(i); // erro, dependendo do objeto que virá if(lista.get(i)instanceofMoto){//OperadorinstanceofverificaseoobjetoÉ-UMtipoMotoMotomoto=(Moto)lista.get(i); // faz a conversão seguramoto.empinaMoto(); //chama o método da classe moto}
if(lista.get(i)instanceofCarro){
Carrocarro=(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=newArrayList<Carro>();lista.add(newCarro());// só é possível adicionar Carro ao ArrayListCarrocarro=lista.get(0);// a conversão não é necessária
List é uma interface
ArrayList é um implementador dessa interface, ou seja, é um tipo de List
adriano_si
Java 5 trouxe uma solução para esse Cating obrigatório… depois vc pode dar uma olhada…
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
thiagolopes
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…