2016-01-28 27 views

risposta

14

Essi creano diversi tipi di oggetti. new ArrayList<>() crea un java.util.ArrayList, che può essere aggiunto a, ecc

Arrays.asList() utilizza un tipo che sembra essere anche chiamato ArrayList, ma è un tipo annidato (java.util.Arrays$ArrayList) e non consentono elementi necessari per essere aggiunti o rimossi . È solo avvolge una matrice.

Ora, se non ti interessano queste differenze, ti ritroverai con due implementazioni approssimativamente equivalenti, entrambe che avvolgono un array nell'interfaccia List<>. Sarei molto sorpreso di vederli diversi in termini di prestazioni in modo significativo - ma come sempre, se hai problemi di rendimento specifici per lo, dovresti testarli nel tuo particolare contesto.

+4

Wow, non sapevo nemmeno che ArrayList di 'Arrays.asList()' in realtà è un altro ArrayList di java.util.ArrayList. – exception1

+2

Non lo sapevo neanche ... Come sembra, le 2 varianti differiscono un po 'in termini di efficienza (almeno sulla mia macchina). Su 100 milioni di corse la prima variante ha bisogno di ~ 1500 ms e la seconda ~ 900 ms – ParkerHalo