2009-10-12 4 views
22

¿Cuál es el costo de utilizar Arrays.asList para convertir matrices de objetos estáticos? Suponiendo que la matriz de objetos tiene N elementos, ¿es solo un algoritmo O (N), donde todos los elementos se copian por referencia o es simplemente una fachada donde la matriz original se coloca detrás de una fachada de Lista?Rendimiento de Arrays.asList

+3

Podría echar un vistazo a las fuentes :) – vava

+1

No siempre se puede ver el código ... alguna vez el código se redirige y se oculta de vista. Sin embargo, no estoy usando OpenJava. – monksy

+5

Bueno, las fuentes de la biblioteca Java a diferencia de .Net one se distribuyen junto con jdk. Hay src.zip justo debajo de "C: \ Archivos de programa \ Java \ jdk1.6.0_11" – vava

Respuesta

34

Es barato, O (1). Como sospecha, la lista es simplemente una envoltura alrededor de la matriz. Esto es confirmado por Java API documentation:

Devuelve una lista de tamaño fijo respaldada por la matriz especificada. (Cambia a la lista devuelta "escribir" en la matriz.)

+0

Al ir en la otra dirección (Collection.toArray), la matriz no es "write-through". Los cambios en la matriz no afectarán a la lista de la que proviene la matriz. –

+0

En otras palabras sam, clona la matriz original. – monksy

Cuestiones relacionadas