web-dev-qa-db-fra.com

Convertir une liste en tableau en Java

Comment convertir une 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);  

Je dois renseigner le tableau tiendas avec les valeurs de tiendasList.

451
colymore

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);
989
Eng.Fouad

Une alternative en Java 8:

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

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

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

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 original en un tableau en utilisant le nouveau créé
  3. Il jette ce tableau dans un tableau long (Long []), que j'ai nommé à juste titre 'tableau'
2
Armed10

Pour ArrayList, les travaux suivants:

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

//... add values

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

Ceci fonctionne. 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;
}

Puis 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
John S.

La meilleure chose que j'ai faite sans Java 8 était: 

public static <T> T[] toArray(List<T> list, Class<T> objectClass) {
    if (list == null) {
        return null;
    }

    T[] listAsArray = (T[]) Array.newInstance(objectClass, list.size());
    list.toArray(listAsArray);
    return listAsArray;
}

Si quelqu'un a une meilleure façon de le faire, merci de partager :)

0
pandre