Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quantas chaves o Map suporta?

Por exemplo, se eu estiver fazendo o cadastro de computadores no sistema de patrimônio de uma empresa. Dois campos são únicos para cada computador, o número do patrimônio interno e o número de série da máquina. É possível criar um Map passando estes dois campos como chave e a partir daí fazer a pesquisa utilizando um ou outro atributo?

2 respostas
solução!

Bom dia Rafael,

O Map do Java não suporta isso, a ideia de chave-valor é ser único, apenas uma chave, apenas um valor.

O que funcionaria seria algo mais ou menos assim:

Vamos supor que você cria a classe abaixo:

public class ChavePatrimonio {
    private int numeroPatrimonio;
    private int numeroSerie;

    //sobrescreva equals e hashCode baseado na regra que você precisa, ou seja, tendo tanto um valor de atributo como o outro serve para identificar, não é obrigatório preencher os dois.
}

Ai no seu mapa você usaria assim (imagine que sua entidade que representa o computador é a ItemPatrimonio):

Map<ChavePatrimonio, ItemPatrimonio> mapaPatrimonio = new HashMap<>();

Com isso, conforme você adicionasse conjuntos de chave-valor neste mapa, para buscar você ia usar o get() normal passando um objeto ChavePatrimonio como chave, mas a lógica do seu equals deste objeto ChavePatrimonio garantiria que será encontrado tanto pelo valor do numeroPatrimonio batendo como pelo numeroSerie.

Espero ter ajudado, qualquer dúvida manda ai.

Abraço.

Ok, Emerson Muito obrigado!