2014-09-24 8 views
79

Esiste un vantaggio (o molta differenza) nell'uso di Arrays.asList (qualcosa) su Collections.singletonList (qualcosa) per creare un elenco contenente un elemento? Quest'ultimo rende anche l'elenco restituito immutabile.Arrays.asList() vs Collections.singletonList()

+7

Potete anche lanciare 'ImmutableList.of()' e 'Lists.newArrayList()' di Guava nel mix. – biziclop

+0

A parte questo, ho avuto Collections.singletonList() ha causato problemi quando un metodo restituisce un elenco che viene successivamente modificato a valle. –

risposta

119

Collections.singletonList(something) è immutabile che Arrays.asList(something) è una rappresentazione fissa dimensioni List di un array in cui la lista ed array vengono integrati nel mucchio.

Arrays.asList(something) consente modifiche non strutturali apportate a esso, che viene riflessa sia per l'elenco sia per l'array congiunto. Getta UnsupportedOperationException per aggiungere, rimuovere elementi anche se è possibile impostare un elemento per un indice particolare.

Eventuali modifiche apportate all'elenco restituite da Collections.singletonList(something) avranno come risultato UnsupportedOperationException.

Inoltre, la capacità della lista restituita da Collections.singletonList(something) sarà sempre differenza Arrays.asList(something) cui capacità sarà la dimensione della matrice di appoggio.

40

Vorrei solo aggiungere che la lista singleton non è supportata da un array e ha solo un riferimento a quell'elemento. Presumibilmente, richiederebbe meno memoria e potrebbe essere significativo in base al numero di elenchi che si desidera creare.

Problemi correlati