737 votes

Convertir la liste en tableau en Java

Comment puis-je convertir un List en Array en Java?

Vérifiez le code ci-dessous:

 ArrayList<Tienda> tiendas;
List<Tienda> tiendasList; 
tiendas = new ArrayList<Tienda>();

Resources res = this.getBaseContext().getResources();
XMLParser saxparser =  new XMLParser(marca,res);

tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();

this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);  
 

J'ai besoin de remplir le tableau tiendas avec les valeurs de tiendasList .

1437voto

Eng.Fouad Points 44085

Non plus:

 Foo[] array = list.toArray(new Foo[list.size()]);
 

ou:

 Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array
 

Notez que cela ne fonctionne que pour les tableaux de types de référence. Pour les tableaux de types primitifs, utilisez la méthode traditionnelle:

 List<Integer> list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);
 

362voto

Vitalii Fedorenko Points 17469

Une alternative en Java 8:

 String[] strings = list.stream().toArray(String[]::new);
 

58voto

Fer Points 135

Je pense que c'est la manière la plus simple:

 Foo[] array = list.toArray(new Foo[0]);
 

1voto

Nabin Points 928

Considérez que vous avez une liste maliste

  1. Afin de créer un nouveau tableau de taille égaux à maliste c'est à dire String[] montableau = new String[myList.zize];

  2. Puis créer un compteur variable avec initialisation à zéro. c'est à dire int compteur = 0;

  3. Ensuite, une boucle dans la liste maliste

  4. Ajouter des éléments à un tableau à l'intérieur de la boucle et incrémente le compteur de 1

Démo:

String[] myArray = new String[myList.zize];
int count = 0;
for(String item:myList){
    myArray = new String();
    myArray[count] = item;
    count++;
}

-1voto

Manny Vellon Points 17

Ce (Ondrej de la réponse):

Foo[] array = list.toArray(new Foo[0]);

Est le plus commun de l'idiome je vois. Ceux qui sont ce qui suggère que vous utilisez le taille de la liste au lieu de "0" sont incompréhension de ce qui se passe ici. Le toArray appel ne prend pas en charge la taille ou le contenu du tableau donné - il seulement besoin de son type. Il aurait été mieux si il a pris un Type réel auquel cas "Foo.class" aurait été beaucoup plus clair. Oui, cet idiome génère un objet factice, mais y compris la taille de la liste signifie simplement que vous générer un plus grand objet fictif. Encore une fois, l'objet n'est pas utilisé de quelque façon, c'est seulement le type qui est nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X