Browse Hashmap with equal values

Asked

Viewed 409 times

1

I am developing an application in Java Web, where it contains several CRUD’s. I need to perform some validations of some values I have stored in a Hashmap. How do I go through it and see if the values are equal?

public Boolean validaProjetoAT(String itens) throws Exception{


        String [] ats = itens.split(",");
        AutorizacaoAtividade autorizacaoAtividade = null;

        for(int i=0; i< ats.length; i++){


            autorizacaoAtividade = new autorizacaoAtividade();
            autorizacaoAtividade.setCdautorizacaoAtividade(Integer.parseInt(ats[i]));
            autorizacaoAtividade = autorizacaoAtividadeService.getInstance().loadAtProcess(autorizacaoAtividade);

            List<ConfiguracaoCiclo> listConfiguracaoCiclo = configuracaoCicloService.findForTipoIteracaoForAT(autorizacaoAtividade);
            //ConfiguracaoCiclo configuracaoCicloAt = new ConfiguracaoCiclo();


            /*Buscar Projeto Asscociado a AT */
            if(listConfiguracaoCiclo != null){
                for (ConfiguracaoCiclo configuracaoCiclo : listConfiguracaoCiclo) {
                    if(configuracaoCiclo.getListaConfiguracaoCicloTipoiteracao() != null && !configuracaoCiclo.getListaConfiguracaoCicloTipoiteracao().isEmpty()){
                        for(ConfiguracaoCicloTipoiteracao ccti : configuracaoCiclo.getListaConfiguracaoCicloTipoiteracao()){
                            if(ccti.getTipoiteracao().equals(autorizacaoAtividade.getTipoiteracao())){
                                mapaProjectAt.put(autorizacaoAtividade, configuracaoCiclo.getProjeto());
                                break;
                            }
                        }
                    }else{
                            mapaProjectAt.put(autorizacaoAtividade, configuracaoCiclo.getProjeto());

                    }
                }
        }
    }
  • Hashmap does not allow equal values. Add your code there editing the question, it is easier to understand the problem with it.

  • 2

    @Article actually, Hashmap does not allow equal keys.

1 answer

5

There are various forms, one of them being:

Map<String, String> map = new HashMap<>();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
map.put("4", "d");
map.put("5", "a");


Set<String> unicos = new HashSet<>();
Set<String> duplicados = map.values()
    .stream()
    .filter(n -> !unicos.add(n))
    .collect(Collectors.toSet());

System.out.println(unicos);
// Printa [a, b, c, d]

System.out.println(duplicados);
// Printa [a]

if(!duplicados.isEmpty()) {
  // Faz algo se existirem duplicados
}

Or, without a stream:

Set<String> unicos = new HashSet<>();
Set<String> duplicados = new HashSet<>();
for(String valor : map.values()) {
  if(!unicos.add(valor)) {
    duplicados.add(valor);
  }
}
  • Project I’m doing makes use of Java 5, due Framework, these ways you suggested and compatible.

  • @Rafaelluz added example without streams

Browser other questions tagged

You are not signed in. Login or sign up in order to post.