- Fundamentos de ProgramaçãoEstruturas de DadosDefinição: Estrutura de Dados
- Fundamentos de ProgramaçãoEstruturas de DadosEstrutura de Dados: Tabela Hash
- Fundamentos de ProgramaçãoHashingTratamento de Colisões em Hashing
- LinguagensJava
O 1º Tenente (T) Cauteloso, ao ler acerca da problemática de colisão em variáveis do tipo HashMap escreveu o código Java abaixo.
import java.util,HashMap;
import br.marinha.mil.API.Pessoal
public static void main(String[] args){
HashMap<String, Militar> hashMapMilitares = new HashMap<String, Militar>();
CadastroMilitares cadastroMilitares = new Pessoal().load();
List<Militar> listaMilitares = cadastroMilitares.getMilitares();
for (Militar militar: listaMilitares) {
for (String nomeDeGuerra: hashMapMilitares.keySet()) {
if (nomeDeGuerra.hashCode().equals(militar.getNomeDeGuerra,hashCode()) {
throw new Exception("Código hash duplicado - COLISÃO!");
}
}
hashMapMilitares.put(militar.getNomeDeGuerra(), militar);
}
}
O método "load()" da classe "Pessoal" carrega o cadastro de militares do banco de dados integrado ao sistema em uma classe "CadastroMilitares" que gerencia o conjunto de tais pessoas. Por meio do método getMilitares dessa classe, uma instância de HashList é carregada, onde "Militar" representa a classe com as informações referentes ao indivíduo, dentre os quais o nome de guerra, atributo do tipo String acessado mediante o getter "getNomeDeGuerra". Sabe-se que não existem dois militares com mesmo nome de guerra registrado. Assim, acerca do código acima e da preocupação do 1º Tenente (T) Cauteloso, assinale a opção correta.