𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀 : 𝗟𝗲𝘀 𝗼𝘂𝘁𝗶𝗹𝘀 𝗰𝗮𝗰𝗵𝗲𝘀 𝗾𝘂𝗲 𝘃𝗼𝘂𝘀 𝗺𝗮𝗻𝗾𝘂𝗲𝘇

La plupart des développeurs utilisent les collections Java de la même manière chaque jour. Ils utilisent des ArrayList et des HashSet. Mais vous passez peut-être à côté d'outils qui rendraient votre code plus rapide et plus sûr.

Voici trois outils spécifiques pour améliorer votre code.

  1. Arrays.asList n'est pas une véritable List

Lorsque vous utilisez Arrays.asList(array), vous obtenez une liste de taille fixe. Elle est directement liée à votre tableau d'origine.

  • Si vous modifiez le tableau, la liste change.
  • Si vous essayez d'ajouter ou de supprimer des éléments, votre code plante avec une erreur.

Pour corriger cela, enveloppez-la dans une nouvelle ArrayList : List<String> list = new ArrayList<>(Arrays.asList(array));

Cela crée une véritable liste indépendante que vous pouvez modifier.

  1. Utilisez EnumSet pour la performance

Stockez-vous des enums dans un HashSet ? Cela crée une surcharge inutile. Les HashSets utilisent des tables de hachage et des en-têtes d'objets.

Utilisez plutôt EnumSet. Il utilise un vecteur de bits en interne. Il est extrêmement rapide et n'utilise presque aucune mémoire. Il est parfait pour les systèmes basés sur des drapeaux (flags), comme les pouvoirs de joueurs ou les paramètres.

  • Il est sûr au niveau du type (type-safe).
  • Il est beaucoup plus rapide qu'un HashSet.
  • Il gère les opérations bit à bit pour vous.
  1. Utilisez ConcurrentHashMap.computeIfAbsent pour les caches

Si vous construisez un cache, vous écrivez souvent du code complexe pour empêcher plusieurs threads de calculer la même valeur. C'est ce qu'on appelle le "double-checked locking". C'est difficile à lire et facile à casser.

À la place, utilisez une seule ligne : cache.computeIfAbsent(key, this::expensiveCalculation);

Cette méthode est atomique. Elle garantit que le calcul ne s'exécute qu'une seule fois, même si de nombreux threads demandent la même clé au même moment. Cela réduit les bugs et rend votre intention claire.

Pourquoi ces outils sont importants :

  • Performance prévisible : vous évitez les coûts de mémoire cachés.
  • Moins de bugs : vous cessez de lutter contre les conditions de concurrence (race conditions) dans le code multi-threadé.
  • Code plus clair : les autres développeurs comprennent immédiatement votre conception.

Arrêtez de lutter contre le framework. Commencez à l'utiliser pour écrire un code plus léger et plus sûr.

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