Generic em ArrayList e HashMap

Usarei  dois exemplos basicos para a comparação de ArrayList e HashMap. 

A classe Aluno abaixo será usada para instanciarmos alguns objetos.

public Class Aluno {
private String  nome;
private String fone;

Aluno(String _nome){
this.nome = _nome;
}

public String getNome(){
return this.nome;
}
}

ArrayList

Em outra class podemos usar o ArrayList da seguinte forma:

1        ArrayList<Aluno> alunos = new ArrayList<Aluno>();
2        
3        Aluno a = new Aluno(“YRoss”,”85 99887755″); 
4        alunos.add( a );
5        
6        Aluno x = alunos.get( 0 );        
7        System.out.println(“Nome: “+ x.getNome() );  

Observe o código acima e perceba que na linha 6 não foi preciso realizar um “casting” para converter o objeto retirado da coleção. O mesmo havia sido armazenado internamente como um objeto Aluno e não como sendo do tipo “Object”.

Note que usei o metodo add() para adicionar um elemento ao ArrayList alunos. Logo abaixo linha 6 usamos x para fazer refenrência ao retorno do metodo get(), que como foi citado acima retorna um Objeto do tipo Aluno.

Mas onde esta generico?
Na linha 1 temos <Aluno>, é nesse momentos que informamos ao ArrayList que armazenaremos um formato generico, em nosso caso objetos da Classe Aluno, ou herdeiros de Aluno.

HashMap

1    HashMap<String, Aluno> hash = new HashMap<String, Aluno>();
2    Aluno a = new Aluno(“YRoss”,”34913491″ );  
3    hash.put(a.getNome(),  a);

Linha 1: Cria HashMap e informamos que usaremos um objeto String como chave, e armazenaremos no elemento um objeto do tipo Aluno.

Linha 2: Cria uma referencia ao novo objeto do tipo aluno, passando nome e telefone.

linha3: Adiciona um elemento ao HashMap. Observe que o metodo put(), diferente do metodo add() de ArrayList, recebe dois argumentos, uma chave do tipo String e um objeto do tipo Aluno. Para a String passei o proprio nome(a.getNome()) do aluno  e para o objeto passei a.

Arraylist = busca ordenada, ordem natural de inserção.

HashMap = busca por chave;

Agora dependendo da necessidade escolha o que achar melhor.

Explore posts in the same categories: Generics, Java

Tags: , , , ,

You can comment below, or link to this permanent URL from your own site.

Comment: