2015-10-13 86 views
2

我可以在varArgs上使用forEach()stream()嗎?使用forEach遍歷varArgs

protected void getSomeIds (List<String>... varArgs) { 
    for(List lst:varArgs) { 
    System.out.println("This works"); 
    } 
    //Following does not compile 
    varArgs.forEach(); 
    // nor 
    varArgs.stream(); 
    } 

回答

7

可變參數表現類似於數組,這樣你就可以使用Stream.of得到的可變參數的Stream

Stream<List<String>> stream = Stream.of (varArgs); 

你還可以用在它們之間迭代:

Stream.of(varArgs).forEach (...); 
+4

由於,'varArgs'實際上已經是一個陣列,'Arrays.stream(...)'應當優選避免偶然創建保持一個陣列的單元素流。如果你實際上有多個參數,比如'Stream.of(...)'是首選的方法,例如'Stream.of(arg1,arg2,arg3)' – Holger

+0

好吧,這對我來說是有意義的。感謝Holger和Eran –

-1

你感到困惑句法。嘗試:

for(List lst:varArgs) { 
    lst.forEach(str -> System.out.println(str)); 
}