2009-10-12 4 views
22

Quel est le coût d'utilisation de Arrays.asList pour convertir des tableaux d'objets statiques? En supposant que le tableau d'objets a N éléments est-ce juste un algorithme O (N), où tous les éléments sont copiés par référence ou est-ce simplement une façade où le tableau d'origine est placé derrière une façade Liste?Performance de Arrays.asList

+3

Vous pourriez avoir jeter un oeil dans les sources :) – vava

+1

Vous ne pouvez pas toujours regarder dans le code ... quelque temps le code est redirigé et caché de la vue. Cependant, je n'utilise pas OpenJava. – monksy

+5

Eh bien, les sources de la bibliothèque Java par opposition à .Net sont distribuées avec jdk. Il y a src.zip juste sous "C: \ Program Files \ Java \ jdk1.6.0_11" – vava

Répondre

34

Il est bon marché, O (1). Comme vous pensez que la liste est simplement un wrapper autour du tableau. Cela est confirmé par le Java API documentation:

Retourne une liste de taille fixe soutenue par le tableau spécifié. (Les modifications apportées à la liste retournée « écrire par » au tableau.)

+0

Lorsque vous allez dans l'autre direction (Collection.toArray), le tableau n'est pas "write-through". Les modifications apportées au tableau n'affectent pas la liste d'où provient le tableau. –

+0

Dans d'autres mots, sam, il clone le tableau original. – monksy