Item 37: Use EnumMap em vez da indexação ordinal

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…


This content originally appeared on DEV Community and was authored by Mulher Programadora

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. Image description

Image description

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). Image description

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. Image description

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

Image description

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.


This content originally appeared on DEV Community and was authored by Mulher Programadora


Print Share Comment Cite Upload Translate Updates
APA

Mulher Programadora | Sciencx (2024-06-27T13:16:58+00:00) Item 37: Use EnumMap em vez da indexação ordinal. Retrieved from https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/

MLA
" » Item 37: Use EnumMap em vez da indexação ordinal." Mulher Programadora | Sciencx - Thursday June 27, 2024, https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/
HARVARD
Mulher Programadora | Sciencx Thursday June 27, 2024 » Item 37: Use EnumMap em vez da indexação ordinal., viewed ,<https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/>
VANCOUVER
Mulher Programadora | Sciencx - » Item 37: Use EnumMap em vez da indexação ordinal. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/
CHICAGO
" » Item 37: Use EnumMap em vez da indexação ordinal." Mulher Programadora | Sciencx - Accessed . https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/
IEEE
" » Item 37: Use EnumMap em vez da indexação ordinal." Mulher Programadora | Sciencx [Online]. Available: https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/. [Accessed: ]
rf:citation
» Item 37: Use EnumMap em vez da indexação ordinal | Mulher Programadora | Sciencx | https://www.scien.cx/2024/06/27/item-37-use-enummap-em-vez-da-indexacao-ordinal/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.