2017-05-24 2 views
1

Also ich habe eine ArrayList, die Arrays als Wert haben. Jetzt möchte ich durch jeden ArrayList-Knoten und auch durch den jeweiligen Array-Index an jedem Knoten iterieren. Was sollte der beste Weg sein, dies zu tun, wenn ich einen ganzen Knotenindex (alle Array-Komponenten in diesem Knoten) in einer einzigen Zeile anzeigen möchte.Wie man durch ein Array iteriert, die Knotenwerte in einer ArrayList sind?

Betrachten wir ein:

ArrayList<String[]> arr_list = new ArrayList<String[]>; 
String array1[] = {"4","5","3","2"}; 
String array2[] = {"7","1","0","9"}; 
String array3[] = {"8","4","3","1"}; 
arr_list.add(0,array1); 
arr_list.add(1,array2); 
arr_list.add(2,array3); 

ich es in diesem Format angezeigt werden müssen (hier Startzahl in jeder Zeile ist Knotenindex)

0 : 4 5 3 2 
1 : 7 1 0 9 
2 : 8 4 3 1 
+2

Wie erwarten Sie, eine Liste von Strings [] ein Bündel von int [] ????? –

+0

mein Fehler. Korrigiert –

Antwort

1

Verwenden einer Doppelschleife, der erste, der Iteration durch die ArrayList und die zweite durch jedes Array zu durchlaufen. Nebenbei bemerkt sollten Ihre Arrays String-Arrays sein, sonst wird nichts funktionieren.

for (int i = 0; i < arr_list.size(); i++) { 
    System.out.print(i + " : "); 
    for (int j = 0; j < arr_list.get(i).length; j++) { 
     System.out.print(arr_list.get(i)[j] + " "); 
    } 
    System.out.println(); 
} 

Ist das wonach Sie suchen?

+0

Können wir einen Iterator verwenden? –

+0

Sicher, aber ich wählte eine doppelte Schleife, um den Index jedes Ihrer Arrays leicht zu drucken. Ein Iterator würde sicherlich auch den Trick tun, obwohl – Kaiserbogey

1

eine Liste der Liste definieren, die Sie Schleife auf:

List<List<String>> l = new ArrayList<>(); 
l.add(Arrays.asList("4", "5", "3", "2")); 
l.add(Arrays.asList("7", "1", "0", "9")); 
l.add(Arrays.asList("8", "4", "3", "1")); 

for (int i = 0; i < l.size(); i++) { 
    System.out.println(i + " : " + l.get(i)); 
} 

nur, wenn Sie die [] nicht wollen und brauchen diejenigen Raum

getrennt
for (int i = 0; i < l.size(); i++) { 
    System.out.println(i + " : " + String.join(" ", l.get(i))); 
} 

Bearbeiten:

weil bald oder später Menschen, die diese verwendet java8 Strom Leistung benötigen:

List<List<String>> l = new ArrayList<>(); 
l.add(Arrays.asList("4", "5", "3", "2")); 
l.add(Arrays.asList("7", "1", "0", "9")); 
l.add(Arrays.asList("8", "4", "3", "1")); 

IntStream.range(0, l.size()).forEach(x -> System.out.println(x + " : " + String.join(" ", l.get(x)))); 
+0

Dies wird das Array nicht als eine durch Leerzeichen getrennte Liste drucken. –

+1

fertig! @ WillemVanOnsem –

+0

Gibt es einen Grund, warum Sie * an 'j' anhängen und nicht einfach zuweisen? –

0

können Sie eine Schleife foreach verwenden über die Elemente in einem ArrayList iterieren und dann können wir schreiben:

int idx = 0; 
for(String[] row : arr_list) { 
    System.out.print(idx); 
    System.out.print(" :"); 
    for(String e : row) { 
     System.out.print(' '); 
     System.out.print(e); 
    } 
    System.out.println(); 
    idx++; 
} 
1
public static void main(String[] args){ 

    ArrayList<int[]> arr_list = new ArrayList<int[]>(); 
    int array1[] = {4,5,3,2}; 
    int array2[] = {7,1,0,9}; 
    int array3[] = {8,4,3,1}; 
    arr_list.add(array1); 
    arr_list.add(array2); 
    arr_list.add(array3); 

    for(int i = 0; i<arr_list.size(); i++){ 
     System.out.print(i+" : "); 
     for(int number : arr_list.get(i)){ 
      System.out.print(number+ " "); 
     } 
     System.out.println(""); 
    } 
} 
1

ich hoffe, dass Sie schon Ihre Antwort erhalten, zusätzlich

String[] arr = {"1","2"}; 
     String[] arr1 = {"3","4"}; 
     ArrayList<String[]> ar2 = new ArrayList<>(); 
     ar2.add(arr); 
     ar2.add(arr1); 
     int i = 0; 
     for(String[] a: ar2){ 
      System.out.println(i+ ": "+Arrays.toString(a).replaceAll("[, \\[ \\]]", " ")); 
      i++; 
     } 
1

Sie es Iterator mit dem ArrayList direkt von .iterator() Aufruf und weisen in Objekt Iterator verwenden können, und für das Array von Strings können Sie verwenden foreach:

 Iterator iterator = arr_list.iterator(); 
     while(iterator.hasNext()){ 
      String[] array = (String[]) iterator.next(); 
      int index = arr_list.indexOf(array); 
      System.out.print(index + " : "); 
      for(String str : array){ 
       System.out.print(str); 
      } 
      System.out.println(""); 
     } 

Hoffnung, die

0

hilft Can Du benutzt eine Karte? Scheint sehr machbar mit einer ähnlichen Struktur. Eine einfache Umwandlung der Werte in Ganzzahlen und eine traditionelle Traversierung wird erhalten, was Sie wollen.

Verwandte Themen