𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀: 𝗟𝗮𝘀 𝗵𝗲𝗿𝗿𝗮𝗺𝗶𝗲𝗻𝘁𝗮𝘀 𝗼𝗰𝘂𝗹𝘁𝗮𝘀 𝗾𝘂𝗲 𝘁𝗲 𝗲𝘀𝘁𝗮́𝘀 𝗽𝗲𝗿𝗱𝗶𝗲𝗻𝗱𝗼

La mayoría de los desarrolladores usan las colecciones de Java de la misma manera todos los días. Usan ArrayLists y HashSets. Pero es posible que te estés perdiendo herramientas que hacen que tu código sea más rápido y seguro.

Aquí tienes tres herramientas específicas para mejorar tu código.

  1. Arrays.asList no es una List real

Cuando usas Arrays.asList(array), obtienes una lista de tamaño fijo. Esta está vinculada directamente a tu array original.

  • Si cambias el array, la lista cambia.
  • Si intentas añadir o eliminar elementos, tu código fallará con un error.

Para solucionar esto, envuélvelo en un nuevo ArrayList: List<String> list = new ArrayList<>(Arrays.asList(array));

Esto crea una lista real e independiente que puedes modificar.

  1. Usa EnumSet para mejorar el rendimiento

¿Guardas enums en un HashSet? Eso crea una sobrecarga innecesaria. Los HashSets utilizan tablas hash y encabezados de objetos (object headers).

En su lugar, usa EnumSet. Utiliza un vector de bits internamente. Es extremadamente rápido y consume casi nada de memoria. Es perfecto para sistemas basados en flags, como poderes de jugadores o configuraciones.

  • Es seguro en cuanto al tipo (type-safe).
  • Es mucho más rápido que un HashSet.
  • Gestiona las operaciones de bits por ti.
  1. Usa ConcurrentHashMap.computeIfAbsent para cachés

Si construyes una caché, a menudo escribes código complejo para evitar que múltiples hilos calculen el mismo valor. Esto se llama "double-checked locking". Es difícil de leer y fácil de romper.

En su lugar, usa una sola línea: cache.computeIfAbsent(key, this::expensiveCalculation);

Este método es atómico. Garantiza que el cálculo se ejecute solo una vez, incluso si muchos hilos solicitan la misma clave al mismo tiempo. Reduce los errores y deja clara tu intención.

Por qué estas herramientas son importantes:

  • Rendimiento predecible: Evitas costes de memoria ocultos.
  • Menos errores: Dejas de luchar contra condiciones de carrera (race conditions) en código multihilo.
  • Código más claro: Otros desarrolladores entenderán tu diseño de inmediato.

Deja de luchar contra el framework. Empieza a usarlo para escribir código más ligero y seguro.

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