使用forEach迭代varArgs

Pav*_*nik 9 java java-8

我可以在varArgs上使用forEach()stream()吗?

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

Era*_*ran 18

Varargs的行为与数组类似,因此您可以Stream使用Stream.of以下方法获取varargs :

Stream<List<String>> stream = Stream.of (varArgs);
Run Code Online (Sandbox Code Playgroud)

你可以用以下方法迭代它们:

Stream.of(varArgs).forEach (...);
Run Code Online (Sandbox Code Playgroud)

  • 因为`varArgs`实际上已经是一个数组,所以应该首选`Arrays.stream(...)`以避免意外创建一个包含一个数组的单元素流.如果你实际上有多个参数,`Stream.of(...)`是首选方法,例如`Stream.of(arg1,arg2,arg3)` (7认同)