2009-10-12 8 views
22

Qual è il costo dell'utilizzo di Arrays.asList per convertire gli array di oggetti statici? Supponendo che l'array di oggetti abbia N elementi è solo un algoritmo O (N), in cui tutti gli elementi sono copiati per riferimento o è semplicemente una facciata in cui l'array originale è posto dietro una facciata di Lista?Prestazioni di Arrays.asList

+3

si potrebbe avere uno sguardo in fonti :) – vava

+1

Non si può sempre guardare nel codice ... qualche volta il codice viene reindirizzata e nascosto dalla vista Tuttavia, non sto usando OpenJava. – monksy

+5

Bene, le fonti di libreria Java rispetto a .Net sono distribuite insieme a jdk. C'è src.zip proprio sotto "C: \ Programmi \ Java \ jdk1.6.0_11" – vava

risposta

34

È economico, O (1). Come sospetti, la lista è semplicemente un wrapper attorno all'array. Ciò è confermato dal Java API documentation:

Restituisce un elenco di dimensioni fisse supportato dalla matrice specificata. (Modifiche al lista restituita "scrivere attraverso" alla matrice.)

+0

Quando si va nella direzione opposta (Collection.toArray) la matrice non è "write-through". Le modifiche all'array non influiscono sull'elenco da cui proviene l'array. –

+0

In otherwords sam, clona l'array originale. – monksy