2015-10-13 85 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)); 
}