Go through HashMap with equal values

1

I'm developing an application in Java Web, where it contains several CRUD's. I need to perform some validations of values that I have stored in a HashMap. How do I go through it and check if the values are the same?

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());

                    }
                }
        }
    }
    
asked by anonymous 21.05.2018 / 14:05

1 answer

4

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 streams:

Set<String> unicos = new HashSet<>();
Set<String> duplicados = new HashSet<>();
for(String valor : map.values()) {
  if(!unicos.add(valor)) {
    duplicados.add(valor);
  }
}
    
21.05.2018 / 14:23