Donc j'ai:
ArrayList<ArrayList<String>>
Qui contient un nombre x d'ArrayLists qui contient un autre nombre y de chaînes. Pour démontrer:
Index 0:
String 1
String 2
String 3
Index 1:
String 4
Index 2:
Index 3:
String 5
String 6
Où index fait référence à l'index du tableau contenant une chaîne.
Comment puis-je transformer cela en un tableau 2D qui ressemble à:
{{String1, String2, String3},{String4}, {}, {String5, String6}}
Merci beaucoup.
String[][] array = new String[arrayList.size()][];
for (int i = 0; i < arrayList.size(); i++) {
ArrayList<String> row = arrayList.get(i);
array[i] = row.toArray(new String[row.size()]);
}
où arrayList
est votre ArrayList<ArrayList<String>>
(ou tout List<List<String>>
, modifiez la première ligne de la boucle for
en conséquence)
Vous pouvez utiliser la méthode toArray()
pour convertir une liste de tableaux en un tableau. Comme vous avez ArrayList dans ArrayList, vous devrez parcourir chaque élément et appliquer cette méthode.
Quelque chose comme ça:-
ArrayList<ArrayList<String>> mainList = new ArrayList<ArrayList<String>>();
// populate this list here
//more code
// convert to an array of ArrayLists
ArrayList<String[]> tempList = new ArrayList<String[]>();
for (ArrayList<String> stringList : mainList){
tempList.add((String[])stringList.toArray());
}
//Convert to array of arrays - 2D array
String [][]list = (String[][])tempList.toArray();
Vous pouvez en savoir plus sur toArray()
ici.
ArrayList<ArrayList<String>> list= new ArrayList<ArrayList<String>>();
ArrayList<String> a = new ArrayList<String>();
ArrayList<String> b = new ArrayList<String>();
a.add("Hello");
b.add("Hell");
list.add(a);
list.add(b);
Object[][] array = new Object[list.size()][];
Iterator<ArrayList<String>> iterator = list.iterator();
int i = 0;
while(iterator.hasNext()){
array[i] = iterator.next().toArray();
}
Vous pouvez utiliser l'extrait de code ci-dessous pour convertir Object [] en String [].
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
Par exemple:
public String[][] toArray(List<List<String>> list) {
String[][] r = new String[list.size()][];
int i = 0;
for (List<String> next : list) {
r[i++] = next.toArray(new String[next.size()]);
}
return r;
}
Ce mini code de programme complet répond à cette question de manière assez explicite. Il suffit de le coller et de le lancer:
import Java.util.ArrayList;
import Java.util.List;
public class ListTo2Darray {
public String[][] toArray(List<List<?>> list) {
String[][] r = new String[list.size()][];
int i = 0;
for (List<?> next : list) {
r[i++] = next.toArray(new String[next.size()]);
}
return r;
}
public static void main(String[]arg){
String[][] sham;
List<List<?>> mList = new ArrayList();
List<String> a= new ArrayList();
List<String> b= new ArrayList();
a.add("a"); a.add("a");
b.add("b"); b.add("b");
mList.add(a); mList.add(b);
ListTo2Darray mt= new ListTo2Darray();
sham= mt.toArray(mList);
System.out.println(sham[0][0]);
System.out.println(sham[0][1]);
System.out.println(sham[1][0]);
System.out.println(sham[1][1]);
}
}