𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀: 𝗢𝘀 𝗛𝗲𝗿𝗿𝗮𝗺𝗲𝗻𝘁𝗮𝘀 𝗢𝗰𝘂𝗹𝘁𝗮𝘀 𝗤𝘂𝗲 𝗩𝗼𝗰𝗲̂ 𝗘𝘀𝘁𝗮́ 𝗣𝗲𝗿𝗱𝗲𝗻𝗱𝗼

A maioria dos desenvolvedores usa as coleções do Java da mesma maneira todos os dias. Eles usam ArrayLists e HashSets. Mas você pode estar perdendo ferramentas que tornam seu código mais rápido e seguro.

Aqui estão três ferramentas específicas para melhorar seu código.

  1. Arrays.asList não é uma List verdadeira

Quando você usa Arrays.asList(array), você obtém uma lista de tamanho fixo. Ela está vinculada diretamente ao seu array original.

  • Se você alterar o array, a lista muda.
  • Se você tentar adicionar ou remover itens, seu código falhará com um erro.

Para corrigir isso, envolva-o em um novo ArrayList: List<String> list = new ArrayList<>(Arrays.asList(array));

Isso cria uma lista real e independente que você pode modificar.

  1. Use EnumSet para melhor desempenho

Você armazena enums em um HashSet? Isso cria um overhead desnecessário. HashSets usam tabelas de hash e cabeçalhos de objeto.

Use EnumSet em vez disso. Ele utiliza um vetor de bits internamente. É extremamente rápido e consome quase nada de memória. É perfeito para sistemas baseados em flags, como poderes de jogadores ou configurações.

  • É seguro quanto ao tipo (type-safe).
  • É muito mais rápido que um HashSet.
  • Ele lida com operações bitwise para você.
  1. Use ConcurrentHashMap.computeIfAbsent para caches

Se você construir um cache, muitas vezes escreverá um código complexo para evitar que múltiplas threads calculem o mesmo valor. Isso é chamado de double-checked locking. É difícil de ler e fácil de quebrar.

Em vez disso, use apenas uma linha: cache.computeIfAbsent(key, this::expensiveCalculation);

Este método é atômico. Ele garante que o cálculo seja executado apenas uma vez, mesmo que muitas threads solicitem a mesma chave ao mesmo tempo. Isso reduz bugs e torna sua intenção clara.

Por que essas ferramentas são importantes:

  • Desempenho previsível: Você evita custos de memória ocultos.
  • Menos bugs: Você para de lutar contra condições de corrida (race conditions) em código multi-thread.
  • Código mais claro: Outros desenvolvedores entendem seu design imediatamente.

Pare de lutar contra o framework. Comece a usá-lo para escrever um código mais enxuto e seguro.

Fonte: https://dev.to/timevolt/java-collections-the-hidden-relics-most-developers-miss-and-why-theyre-game-changers-4ehd