No curso de Ciência da Computação aprendemos as diversas aplicações usando coleções de objetos. Um exemplo de coleção, freqüentemente usada, é o ArrayList genérico do Java 1.5.0, mas no dia-a-dia podemos nos deparar com problemas em que, dado um valor devemos ?ligá-lo? diretamente a um determinado objeto, um exemplo disso seria ?ligar? um cpf diretamente a uma pessoa ou ?ligar? uma matrícula a um aluno especifico.
O cpf ou a matricula é o que chamamos de Keys ( valores chaves ), ou seja, valores que mapeiam(ligam) para um determinado Objeto, sendo um aluno ou uma pessoa. Se quiséssemos achar um aluno através de sua matricula em um ArrayList com todos os alunos, deveríamos procurar um por um nessa lista, o que seria ineficiente se a lista de alunos for muito grande. Assim nesse artigo vamos mostrar como resolver esse problema usando a classe HashMap.
Vamos usar como exemplo, um objeto Aluno que possui como atributos:
Um nome Uma matricula O coeficiente O período em que esta matriculado |
Agora vamos mapear cada matricula a um determinado aluno e imprimir na tela todos os seus atributos. Esse tipo de mapeamento, também conhecido como mapeamento um-para-um, resolverá nosso problema e precisaremos de 3 classes:
Classe Aluno Classe UsandoHashMaps Classe Programa( classe com o método main) |
Segue abaixo o código das respectivas classes:
01 //classe Aluno |
Na classe UsandoHashMaps, descrita abaixo, temos o construtor da classe que cria um objeto do tipo HashMap
1 if( !mapeamentoDeAlunos.containsKey(valorDigitadoInteiro) ) throw new Exception(); |
Significa ?Se não existir matricula valorDigitadoInteiro dentro do mapeamento então lançar exceção?.
A classe UsandoHashMaps esta descrita abaixo:
01 public class UsandoHashMaps { |
Classe Programa:
1 public class Programa { |
Enfim, ao executar o programa e digitar uma matricula existente no mapeamento, o programa deve gerar a seguinte saída:
Nome : Fabrício Passos Coeficiente : 90.0 Período : 6 |
O que indica o sucesso desse mapeamento.
Considerações Finais
A classe HashMap é equivalente à classe HashTable, exceto pelo fato de que HashMap não é sincronizada, ou seja, múltiplos threads podem alterar o mapeamento concorrentemente.
HashMap também admite valores nulos.
Conclusão
Assim finalizamos esse artigo mostrando como foi realizado um mapeamento simples em Java, mapeamento este mais eficiente do que uma busca seqüencial caso fosse utilizado um ArrayList para o determinado problema apresentado.
Estude um problema qualquer que envolva Coleções, agora você possui o conhecimento de mais uma ferramenta que pode te ajudar.
Até a próxima e boa sorte.
Marcelo Oikawa
Nenhum comentário:
Postar um comentário
Comentários sobre assuntos não relacionados ao objetivo deste blog serão removidos.