𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀: 𝗟𝗮𝘀 𝗵𝗲𝗿𝗿𝗮𝗺𝗶𝗲𝗻𝘁𝗮𝘀 𝗼𝗰𝘂𝗹𝘁𝗮𝘀 𝗾𝘂𝗲 𝘁𝗲 𝗲𝘀𝘁𝗮́𝘀 𝗽𝗲𝗿𝗱𝗶𝗲𝗻𝗱𝗼
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.
- 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.
- 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.
- 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.