2016-05-11 9 views
3

Ich habe eine ArrayList voll mit String-Arrays, die ich nicht herausfinden kann, wie man durchschleift. Iteratoren sind neu für mich und obwohl ich sie in der Vergangenheit benutzt habe, bin ich mir nicht sicher, was ich hier tun soll.Iterate über Arraylist <String[]>

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); 

Dies ist ein paar Experimente, die ich mache. Ich dachte, dass iterator.next() das StringArray auf der aktuellen Zeile zurückgeben würde, also habe ich zum Beispiel iterator.next (0) versucht. Wie ich verstehe, gibt mir list.get (x) nur die Zeile.

In dem obigen Code möchte ich jedes Zeilen String Array auf einen bestimmten Index. Etwas wie folgt aus:

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

Es gibt einen feinen Unterschied darin, dass der Autor versucht zu bestimmen, wie der Array-Wert innerhalb der Schleife zu verwenden ist. – cyroxis

Antwort

2

Das liegt daran, dass Sie eine Liste von Arrays haben, nicht eine Liste von Strings.

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

Wenn Sie über jede Zeichenfolge iterieren möchten, müssen Sie zweimal iterieren.

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

EDIT

Obiges ist eine Abkürzung für einen Iterator verwendet wird.

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]); 
} 
0

Sie können dies tun, ohne über Iteratoren in Ihrem Code zu kümmern:

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]); 
} 
+0

1 Sekunde auf den Pfosten gepackt. – TEK

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

Wenn Sie eine Liste verwenden, können Sie auch eine for-Schleife verwenden:

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

Jedes Element in der Arraylist ist ein String [], so iterator.next() gibt einen String [] zurück. Sobald Sie dieses String-Array haben, können Sie darauf wie jedes andere Array mit Array-Index-Notation zugreifen. item[0] ist das erste Element im Array, item.length teilt Ihnen mit, wie viele Elemente sich im Array befinden.

Wo Sie anrufen list.get(4) wird auch ein Array von Zeichenfolgen, die fast sicher ist nicht, was Sie in der Ausgabe wollen zurückgeben.