ListToArray.java
//Génération ArrayList
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
String[] array = (String[])arrayList.toArray();
System.out.println("ArrayList = " + arrayList.toString());
System.out.println("Tableau= " + Arrays.toString(array));
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Essayez de faire revenir la classe
ListToArray.java
//Génération ArrayList
//Omission
System.out.println(arrayList.toArray().getClass());
class [Ljava.lang.Object;
Le tableau de type Object est renvoyé. .. ..
ListToArray.java
//Génération ArrayList
//Omission
//0 pour le nombre d'éléments dans le tableau ou arrayList.size()Mettre en
String[] array = arrayList.toArray(new String[arrayList.size()]);
//String[] array = arrayList.toArray(new String[0]);* Le traitement sera plus lent (décrit plus tard)
System.out.println("ArrayList = " + arrayList.toString());
System.out.println("Tableau= " + Arrays.toString(array));
ArrayList = [A, B, C]
Tableau= [A, B, C]
java:java.util.ArrayList.class
public <T> T[] toArray(T[] a) {
if (a.length < size)
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
System.arraycopy(elementData, 0, a, 0, size); Je copiais String [] tel quel. S'il s'agit de ~~ new String [0], il entrera Arrays.copyOf (3e ligne) et copiera les éléments un par un, ce qui ralentira le processus. ~~ Mis à jour le 29/04/2020
J'ai essayé de vérifier le temps de traitement [Java] ArrayList → Dois-je spécifier la taille pour la conversion de tableau
Seul le type spécifié dans la source de conversion ArrayList
Recommended Posts