3 votes

Itération sur une liste de tableaux<String[]>.

J'ai une ArrayList remplie de tableaux de chaînes de caractères que je ne parviens pas à boucler. Les itérateurs sont nouveaux pour moi et même si je les ai utilisés dans le passé, je ne suis pas sûr de ce que je dois faire ici.

Iterator<String[]> iterator = list.iterator();
                while (iterator.hasNext()) {
                    String trip = "Till: " + iterator.next(0) + " | Från: " + list.get(4) + " | Kostar: " + list.get(1) +"kr | Avgår: " + list.get(2) + " | Ankomst Tid: " + list.get(3) + " | Antal bokningar: " + list.get(4);

C'est une expérience que je suis en train de faire. Je pensais que iterator.next() renverrait le StringArray de la ligne actuelle, j'ai donc essayé par exemple iterator.next(0). Si je comprends bien, list.get(x) ne me donne que la ligne.

Dans le code ci-dessus, je veux que toutes les lignes de String Array à un certain index. Quelque chose comme ceci :

for each row
 system.out.println(String[2] +String[5]);

4voto

cyroxis Points 2749

C'est parce que vous avez une liste de tableaux, et non une liste de chaînes de caractères.

List<String[]> list = //some data
for (String[] array : list){
    System.out.println(array[3] + ":" + array[5]);
}

Si vous voulez itérer sur chaque chaîne, vous devrez le faire deux fois.

List<String[]> list = //some data
for (String[] array : list){
    for (String s : array){
        System.out.println(s);
    }
}

EDIT

Ce qui précède est un raccourci pour utiliser un itérateur.

List<String[]> list = //some data
Iterator<String[]> itr = list.iterator();
while (itr.hasNext()){
    String[] array = itr.next(); // You were just missing saving the value for reuse
    System.out.println(array[3] + ":" + array[5]);
}

1voto

Vous pouvez le faire sans avoir à vous soucier des itérateurs dans votre code :

List<String[]> test = new ArrayList<>();
for(String[] array : test) {
    //Iterate over inner array:
    for(String s : array) {
        System.out.println(s);
    }
    //or access directly
    System.out.println(array[0]);
}

0voto

Zircon Points 3364
Iterator<String[]> iterator = list.iterator();
while (iterator.hasNext()) {
    String[] row = iterator.next();
    //Do stuff with row
}

Si vous utilisez une liste, vous pouvez également utiliser une boucle for :

for(String[] row : list) {
    //Do stuff with row
}

-1voto

David Points 1671

Chaque élément de la ArrayList est un String[], donc iterator.next() retourne un String[]. Une fois que vous avez ce tableau de chaînes, vous pouvez y accéder comme n'importe quel autre tableau avec la notation de l'indice de tableau. item[0] est le premier élément du tableau, item.length vous indique combien d'éléments se trouvent dans le tableau.

Où vous appelez list.get(4) retournera également un tableau de chaînes de caractères, ce qui n'est certainement pas ce que vous voulez dans la sortie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X