2017-05-24 37 views
1

所以我有一個數組作爲它的值的ArrayList。現在我想遍歷每個ArrayList節點以及每個節點的所有相應數組索引。如果我想在一行中顯示整個節點索引(該節點中的所有數組組件),最好的方法是什麼?如何迭代ArrayList中的節點值的數組?

考慮的:

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

我需要在這個格式來顯示它(從這裏開始在每個行號爲節點索引)

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

您如何期望將字符串列表[]一堆int [] ????? –

+0

我的錯誤。更正 –

回答

1

使用雙迴路,第一個迭代ArrayList,第二個遍歷每個數組。在附註中,你的數組應該是String數組,否則什麼都不會工作。

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

這是你在找什麼?

+0

我們可以使用迭代器嗎? –

+0

當然,但我選擇使用雙循環來輕鬆打印每個數組的索引。迭代器肯定也會這樣做,儘管 – Kaiserbogey

1

定義可循環的名單列表:

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

,以防萬一你不想要的[],需要那些空格分隔

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

編輯

因爲遲早人們會需要同樣使用java8流功率:

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

這不會將數組作爲空格分隔列表打印。 –

+1

完成! @WillemVanOnsem –

+0

有沒有原因爲什麼你*追加*到'j'而不是簡單地賦值? –

0

您可以使用的foreach循環來遍歷在ArrayList的元素,然後我們可以這樣寫:

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

我希望你已經得到你的答案,另外

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

您可以直接致電.iterator()使用IteratorArrayList並在其分配給迭代器對象,併爲字符串數組,你可以使用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(""); 
     } 

希望幫助

0

燦你使用地圖?看起來很可行

Map<Integer, ArrayList<String>> 

類似的結構。將值簡單地轉換爲整數和傳統的遍歷將得到你想要的。