𝗣𝗮𝗱𝗿𝗼𝗻𝗻𝗲𝗴𝗴𝗶𝗮 𝗹𝗲 𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀

La maggior parte degli sviluppatori usa di default ArrayList o HashSet. Questo funziona per compiti semplici, ma fallisce quando servono velocità o scalabilità.

Una volta ho costruito una classifica per un gioco usando una semplice ArrayList. La ordinavo ogni volta che un punteggio cambiava. L'interfaccia utente si bloccava continuamente. Stavo combattendo contro il linguaggio invece di usarlo.

Smetti di usare gli strumenti sbagliati. Usa queste tre collezioni specializzate per scrivere codice più veloce e pulito.

  1. EnumSet per le costanti Enum

Se usi HashSet per gli enum, paghi un prezzo in termini di prestazioni. Ogni inserimento effettua il boxing dell'enum in un oggetto. Questo aggiunge un overhead non necessario.

EnumSet utilizza un vettore di bit. Esegue i controlli utilizzando una singola istruzione della CPU.

Prima: Set abilities = new HashSet<>(); abilities.add(Ability.FIRE);

Dopo: EnumSet abilities = EnumSet.of(Ability.FIRE);

  1. NavigableSet per query di intervallo

Scorrere manualmente una lista ordinata per trovare un intervallo è lento e soggetto a errori. Spesso si finisce per avere bug di tipo off-by-one.

NavigableSet mantiene i dati ordinati automaticamente. Fornisce ricerche O(log n) per i sottoinsiemi.

Smetti di affidarti sempre alle stesse due collezioni. Scegli lo strumento che meglio si adatta al tuo pattern di dati.

Fonte: https://dev.to/timevolt/the-java-collections-force-mastering-the-hidden-gems-like-a-jedi-4438