Question Convertir la liste en tableau en Java


Comment puis-je convertir un List à un 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.


435
2018-03-05 19:37


origine


Réponses:


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);

961
2018-03-05 19:39



Une alternative en Java 8:

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

142
2018-04-20 16:30



Je pense que c'est le moyen le plus simple:

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

32
2018-01-03 10:58



Je suis tombé sur cet extrait de code qui le résout.

//Creating a sample ArrayList 
List<Long> list = new ArrayList<Long>();

//Adding some long type values
list.add(100l);
list.add(200l);
list.add(300l);

//Converting the ArrayList to a Long
Long[] array = (Long[]) list.toArray(new Long[list.size()]);

//Printing the results
System.out.println(array[0] + " " + array[1] + " " + array[2]);

La conversion fonctionne comme suit:

  1. Il crée un nouveau tableau Long, avec la taille de la liste d'origine
  2. Il convertit le ArrayList d'origine en un tableau en utilisant celui nouvellement créé
  3. Il jette ce tableau dans un tableau long (long []), que j'ai nommé de manière appropriée «tableau»

2
2017-12-31 15:32



Pour ArrayList les travaux suivants:

ArrayList<Foo> list = new ArrayList<Foo>();

//... add values

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

0
2017-11-10 21:19



Exemple tiré de cette page: http://www.java-examples.com/copy-all-elements-java-arraylist-object-array-example

import java.util.ArrayList;

public class CopyElementsOfArrayListToArrayExample {

  public static void main(String[] args) {
    //create an ArrayList object
    ArrayList arrayList = new ArrayList();

    //Add elements to ArrayList
    arrayList.add("1");
    arrayList.add("2");
    arrayList.add("3");
    arrayList.add("4");
    arrayList.add("5");

    /*
      To copy all elements of java ArrayList object into array use
      Object[] toArray() method.
    */

    Object[] objArray = arrayList.toArray();

    //display contents of Object array
    System.out.println("ArrayList elements are copied into an Array.
                                                  Now Array Contains..");
    for(int index=0; index < objArray.length ; index++)
      System.out.println(objArray[index]);
  }
}

/*
Output would be
ArrayList elements are copied into an Array. Now Array Contains..
1
2
3
4
5

0
2017-12-02 10:27



Ceci est des travaux. Genre de.

public static Object[] toArray(List<?> a) {
    Object[] arr = new Object[a.size()];
    for (int i = 0; i < a.size(); i++)
        arr[i] = a.get(i);
    return arr;
}

Ensuite, la méthode principale.

public static void main(String[] args) {
    List<String> list = new ArrayList<String>() {{
        add("hello");
        add("world");
    }};
    Object[] arr = toArray(list);
    System.out.println(arr[0]);
}

0
2018-01-15 13:37



Ceci (la réponse d'Ondrej):

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

Est l'idiome le plus commun que je vois. Ceux qui suggèrent que vous utilisez la taille réelle de la liste au lieu de "0" se méprennent sur ce qui se passe ici. L'appel toArray ne se soucie pas de la taille ou du contenu du tableau donné - il n'a besoin que de son type. Il aurait été préférable qu'il prenne un Type réel dans quel cas "Foo.class" aurait été beaucoup plus clair. Oui, cet idiome génère un objet factice, mais inclure la taille de la liste signifie simplement que vous générez un objet factice plus grand. Encore une fois, l'objet n'est utilisé d'aucune façon; c'est seulement le type qui est nécessaire.


-1
2017-09-12 00:24



Vous pouvez utiliser toArray () api comme suit,

ArrayList<String> stringList = new ArrayList<String>();
stringList.add("ListItem1");
stringList.add("ListItem2");
String[] stringArray = new String[stringList.size()];
stringArray = stringList.toArray(stringList);

Les valeurs du tableau sont,

for(String value : stringList)
{
    System.out.println(value);
}

-1
2018-01-28 12:44



tiendas = new ArrayList<Tienda>(tiendasList);

Toutes les implémentations de collection ont un constructeur surchargé qui prend une autre collection (avec le modèle <T> correspondant à). La nouvelle instance est instanciée avec la collection transmise.


-3
2017-11-28 12:47



Essaye ça:

List list = new ArrayList();
list.add("Apple");
list.add("Banana");

Object[] ol = list.toArray();

-5
2018-04-30 13:13