2017-09-05 41 views
0

我嘗試forEach一個2d列表,將一個int []數組放入lambda。編譯器會抱怨「只能遍歷數組或java.lang.Iterable的實例」只能迭代一個數組或java.lang.Iterable的實例嗎?

List<int []> list2d = new ArrayList<>(); 
    list2d.add(new int[] {1,3,5,7}); 
    list2d.add(new int[] {2,4,6,8}); 

    list.forEach((array)-> {  */// why here array can't be iterated?* 
     for(int num: array) { 
      System.out.println(num); 
     } 
    }); 
+5

只是爲了澄清,它真的是'list.forEach',而不是'list2d.forEach'嗎?如果是這樣,什麼是「列表」? (我懷疑你有兩個類似命名的變量,並且使用了錯誤的變量。) – yshavit

+4

適用於'list2d.forEach'。投票結束爲錯字。 – shmosel

回答

0

我嘗試了我的電腦上,它的作品,但你需要使用正確的變量:

list.forEach((array)-> {  // why here array can't be iterated? 
    for(int num: array) { 
     System.out.println(num); 
    } 
}); 

你必須迭代list2d不是列表,不是嗎? 另外,請記住在java中的註釋是在/ * * /之後,或者如果是一行。

+0

我是個白癡......你是對的 –

0

如果我正確地理解了你,你想遍歷數組元素內的元素。你可以通過如下方式實現:

list2d.stream() 
     .flatMapToInt(Arrays::stream) 
     .forEach(System.out::println); 
相關問題