𝗣𝗮𝗱𝗿𝗼𝗻𝗻𝗲𝗴𝗴𝗶𝗮 𝗹𝗲 𝗝𝗮𝘃𝗮 𝗖𝗼𝗹𝗹𝗲𝗰𝘁𝗶𝗼𝗻𝘀
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.
- 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.
- Usalo quando hai un set fisso di valori enum.
- Riduce il garbage collection.
- Offre un incremento di velocità di 10 volte nei cicli serrati.
Prima:
Set
Dopo:
EnumSet
- 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.
- Usalo per tabelle dei punteggi più alti o intervalli di prezzo.
- Usa headSet() o
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