𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀: 𝗗𝗲 𝘃𝗲𝗿𝗯𝗲𝗿𝗴𝗲𝗱𝗲 𝘁𝗼𝗼𝗹𝘀 𝗱𝗶𝗲 𝗷𝗲 𝗺𝗶𝘀𝘁

De meeste ontwikkelaars gebruiken Java collections elke dag op dezelfde manier. Ze gebruiken ArrayLists en HashSets. Maar je mist misschien tools die je code sneller en veiliger maken.

Hier zijn drie specifieke tools om je code te verbeteren.

  1. Arrays.asList is geen echte List

Wanneer je Arrays.asList(array) gebruikt, krijg je een lijst met een vaste grootte. Deze is direct gekoppeld aan je oorspronkelijke array.

  • Als je de array wijzigt, verandert de lijst mee.
  • Als je probeert items toe te voegen of te verwijderen, crasht je code met een foutmelding.

Om dit op te lossen, kun je het omwikkelen met een nieuwe ArrayList: List<String> list = new ArrayList<>(Arrays.asList(array));

Hiermee creëer je een echte, onafhankelijke lijst die je kunt aanpassen.

  1. Gebruik EnumSet voor prestaties

Sla je enums op in een HashSet? Dat zorgt voor onnodige overhead. HashSets maken gebruik van hash-tabellen en object-headers.

Gebruik in plaats daarvan EnumSet. Het maakt intern gebruik van een bitvector. Het is extreem snel en verbruikt bijna geen geheugen. Het is perfect voor flag-gebaseerde systemen zoals player powers of instellingen.

  • Het is type-safe.
  • Het is veel sneller dan een HashSet.
  • Het regelt bitwise operaties voor je.
  1. Gebruik ConcurrentHashMap.computeIfAbsent voor caches

Als je een cache bouwt, schrijf je vaak complexe code om te voorkomen dat meerdere threads dezelfde waarde berekenen. Dit wordt double-checked locking genoemd. Het is lastig te lezen en foutgevoelig.

Gebruik in plaats daarvan één regel: cache.computeIfAbsent(key, this::expensiveCalculation);

Deze methode is atomair. Het zorgt ervoor dat de berekening slechts één keer wordt uitgevoerd, zelfs als veel threads tegelijkertijd om dezelfde key vragen. Dit vermindert bugs en maakt je intentie duidelijk.

Waarom deze tools belangrijk zijn:

  • Voorspelbare prestaties: Je voorkomt verborgen geheugenkosten.
  • Minder bugs: Je hoeft niet meer te vechten tegen race conditions in multi-threaded code.
  • Duidelijkere code: Andere ontwikkelaars begrijpen je ontwerp direct.

Stop met het bevechten van het framework. Begin het te gebruiken om slankere, veiligere code te schrijven.

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