2010-03-29 10 views
2

Comment puis-je remplir un tableau avec les données fournies par une liste?Remplir un tableau avec des données de liste

Par exemple, j'ai une liste avec des chaînes:

List l = new ArrayList<String>(); 
l.add("a"); 
l.add("b"); 
l.add("c"); 

alors je veux copier ces données dans un tableau de chaînes:

String[] array = ? 

Répondre

9

Il y a une méthode toArray() dans la liste ...
Vous devez d'abord allouer un tableau d'une taille appropriée (typiquement list.size()), puis le passer à la méthode toArray en tant que paramètre. Le tableau sera initialisé avec le contenu de la liste.

Par exemple:

String[] myArray = new String[myList.size](); 
myList.toArray(myArray); 

Vous pouvez également faire le nouvel appel à l'intérieur des parenthèses de toArray

+2

Par sécurité, il devrait être 'myArray = myList.toArray (myArray);' – Hardcoded

+0

@Hardcoded: Je me suis toujours posé des questions à propos de celui-ci. Pourquoi y a-t-il même un type de retour ici? Je déteste toujours les méthodes qui changent leur entrée et le retournent à moins que vous les enchaînez. – Uri

+0

La méthode vérifie d'abord si le tableau donné est suffisamment grand. Si ce n'est pas le cas, un nouveau sera créé. La seule raison pour le paramètre array est qu'il n'y avait aucune information sur le type du tableau lors de l'exécution. Il aurait aussi pu être pris dans un objet de classe. – Hardcoded

7

D'abord, vous devez spécifier le type concret de la List - List<String> (ne pas laisser brut).

Ensuite, vous pouvez le faire

String[] array = list.toArray(new String[list.size()]); 
1
String[] array = new String[l.size()]; 
l.toArray(array); 
2

La syntaxe est un peu loufoque; vous devez fournir votre propre tableau créé en entrée.

String[] array = l.toArray(new String[l.size()]); 
3

Vous pouvez utiliser la méthode toArray(T[] a):

String[] arr = list.toArray(new String[0]); 

Ou alternativement:

String[] arr = list.toArray(new String[list.size()]); 

La différence entre les deux est que ce dernier peut pas besoin d'allouer un nouveau tableau .


Effective Java 2e édition: Article 23: Ne pas utiliser les types premières dans le nouveau code.

JLS 4.8 Raw Types

L'utilisation de types bruts est autorisée que comme une concession à la compatibilité du code existant. L'utilisation de types bruts dans le code écrit après l'introduction de la généricité dans le langage de programmation Java est fortement déconseillée. Il est possible que les futures versions du langage de programmation Java interdisent l'utilisation de types bruts.


Ne pas prendre l'habitude de nommer un identifiant l. Cela ressemble énormément à 1.

Questions connexes