dev-resources.site
for different kinds of informations.
Item 37: Use EnumMap em vez da indexação ordinal
Published at
6/27/2024
Categories
java
javaprogramming
Author
javaefetivo
Author
11 person written this
javaefetivo
open
1. Introdução
- Código que usa o método ordinal para indexar um array ou lista.
2. Problema com o uso de ordinais
- Código de exemplo com array indexado pelo ordinal do ciclo de vida de uma planta.
- Arrays não são compatíveis com genéricos, resultando em cast não verificado.
- Necessidade de rotulação manual da saída.
- Perigo de usar valores int incorretos, levando a erros silenciosos ou exceções.
3. Solução com EnumMap
- EnumMap como uma alternativa mais eficiente e segura.
- Programa reescrito utilizando EnumMap.
- Benefícios: código mais curto, claro, seguro e sem necessidade de rotulação manual.
4. Detalhes sobre EnumMap
- EnumMap utiliza um array internamente, combinando a segurança de Map com a rapidez de um array.
- Construtor de EnumMap requer um objeto Class do tipo da chave (token de tipo limitado).
5. Uso de streams com EnumMap
- Programa usando streams para gerenciar o map.
- Problema: implementação de map escolhida pelo stream pode não ser uma EnumMap.
- Solução: uso da forma de três parâmetros do Collectors.groupingBy para especificar a implementação de map.
6. Comparação de comportamentos
- Diferenças de comportamento entre versões com EnumMap e baseadas em stream.
- EnumMap sempre cria um map aninhado, enquanto streams criam apenas se necessário.
7. Caso de uso avançado: mapeamento de dois valores enum
- Exemplo de array de arrays indexados por ordinais para transições de fases.
- Problemas semelhantes: risco de erro na tabela de transição, manutenção difícil.
8. Solução avançada com EnumMap
- Uso de EnumMap para mapear transições de fases.
- como tipo do map.
- Inicialização do map com coletores encadeados.
- Image description
9. Adição de novas fases
- Adicionar novas fases ao sistema com EnumMap é simples e seguro.
- Comparação com a complexidade de atualização de arrays.
10. Cuidados com valores nulos
- Uso de null para indicar ausência de mudança de estado é arriscado.
- Necessidade de uma solução limpa para evitar NullPointerException.
11. Conclusão
- Raramente adequado utilizar ordinais para indexar arrays.
- Preferência pelo uso de EnumMap, especialmente para relacionamentos multidimensionais.
Resumo Final
- Não use ordinais para indexar arrays.
- Prefira EnumMap para segurança, clareza e facilidade de manutenção.
- Considere EnumMap<..., EnumMap<...>> para relacionamentos multidimensionais.
javaprogramming Article's
29 articles in total
10 Best Java Programming Books for 2025
read article
JDK Setup On Linux, Windows, Mac
read article
Modificadores de acesso da linguagem Java
read article
Capítulo 6 Verificação minuciosa dos métodos e classes
read article
Ciclo de Vida de Objetos Java
read article
Introdução às Classes, Objetos e Métodos
read article
Item 43: Dê preferência às referências para métodos em vez dos lambdas
read article
Item 42: Prefira os lambdas às classes anônimas
read article
Reflexão sobre itens 22 e 41 do livro
read article
Item 41: Use as interfaces marcadoras para definir tipos
read article
Item 40: Use a anotação Override com frequência
read article
**Exploring Object-Oriented Programming (OOP) Concepts with Java**
read article
Teste do Capítulo 2
read article
Expressões em Java
read article
Tente Isto 2-2 Tabela-Verdade para os Operadores Lógicos
read article
Precedência de operadores
read article
Item 37: Use EnumMap em vez da indexação ordinal
currently reading
Encoding
read article
Palavras-Chaves
read article
Teste do Capítulo 1
read article
Tente Isto 1-2 Melhore o conversor
read article
Item 33: Pense na possibilidade de usar contêineres heterogêneos typesafe
read article
Item 32: Seja criterioso ao combinar os genéricos com os varargs
read article
Item 31: Use os wildcards limitados para aumentar a flexibilidade da API
read article
Prefira as listas aos arrays
read article
Understanding Data Types in Java
read article
As a freelance java code developer can I get clients where there are developers offering services at extremely low rates?
read article
Basic java tutorial and java programs
read article
How to replace all '0' with '5' without using string or predefined method in java?
read article
Featured ones: