“Inefficient use of keySet iterator instead of entrySet iterator”

“Inefficient use of keySet iterator instead of entrySet iterator” é um problema de performance, de rigor crítico apontado pelo FindBugs. Como o nome já indica é uma ineficiência, ou seja, não terá interferência no funcionamento do código e sim no desempenho.

A baixo segue uma implementação que possui a ineficiência:

for (String email : usuariosPorEmail.keySet()){
    Usuario usuario = usuariosPorEmail.get(email);
}

Isso ocorre porque, recuperando um valor do Map dentro de um comando de repetição(ex: for), é mais eficiênte iterar um entrySet, o qual já retornar a chave e valor, do que iterar um ketSet e fazer pesquisas no map(Map.get(key) a cada iteração).

A baixo segue uma implementação com a correção:

for (Map.Entry<String, Usuario> usuarioPorEmailEntrySet : usuariosPorEmail.entrySet()){

    Usuario usuario = usuarioPorEmailEntrySet.getValue();
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s