Wie kann ich eine List
in eine Array
in Java konvertieren?
Überprüfen Sie den Code unten:
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);
Ich muss das Array tiendas
mit den Werten von tiendasList
füllen.
Entweder:
Foo[] array = list.toArray(new Foo[list.size()]);
oder:
Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array
Beachten Sie, dass dies nur für Arrays von Referenztypen funktioniert. Verwenden Sie für Arrays von primitiven Typen die traditionelle Methode:
List<Integer> list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);
Eine Alternative in Java 8:
String[] strings = list.stream().toArray(String[]::new);
Ich denke, das ist der einfachste Weg:
Foo[] array = list.toArray(new Foo[0]);
Ich bin auf dieses Code-Snippet gestoßen, das es löst.
//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]);
Die Konvertierung funktioniert wie folgt:
Für ArrayList funktioniert Folgendes:
ArrayList<Foo> list = new ArrayList<Foo>();
//... add values
Foo[] resultArray = new Foo[list.size()];
resultArray = list.toArray(resultArray);
Das funktioniert. So'ne Art.
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;
}
Dann die Hauptmethode.
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]);
}
Das Beste, was ich ohne Java 8 fand, war:
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;
}
Wenn jemand einen besseren Weg hat, dies zu tun, teilen Sie es bitte mit :)