我可以在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();
}
你混淆了语法。试试这个:
for(List lst:varArgs) {
lst.forEach(str -> System.out.println(str));
}
Varargs的行为类似于数组,因此您可以使用Stream.of
获取varargs的Stream
:
Stream<List<String>> stream = Stream.of (varArgs);
您可以使用以下方式迭代它们:
Stream.of(varArgs).forEach (...);
问题内容: 我可以在varArgs上使用还是在varArgs上使用? 问题答案: 变量参数的行为与数组相似,因此您可以使用来获取变量变量中的一个: 您可以使用以下方法遍历它们:
我有一个数组列表 如何使用forEach和lambda表达式迭代此列表。
替代的解决方法可以是将有限的函数转换为对检查的异常更友好的普通旧foreach循环。 但天真的方法是失败的: 更新 回答这个问题的一个技巧以前在Why does stream not implementing iterable 上发布过?作为旁侧答案并不能真正回答问题本身。我认为这不足以将这个问题定性为那个问题的重复,因为他们问的是不同的问题。
问题内容: 有没有一种优雅的方法可以跳过Java5 foreach循环中的第一次迭代? 伪代码示例: 问题答案: 我不会称其为优雅,但可能比使用“第一个”布尔值更好: 除此之外,可能没有优雅的方法。
上下文 我想迭代一个Spark数据集,并为每一行更新一个HashMap。 以下是我的代码: 问题 我的问题是Foreach根本不迭代,lambda从来没有执行过,我不知道为什么。 我在这里实现了它:如何在SparkJava中遍历/迭代数据集? 最后,尽管数据集不是空的,但所有内部向量都保持为空(初始化时)(查看给定代码示例中的第一个注释)。 我知道foreach从不迭代,因为我做了两个测试: 添加
我最近开始检查新的Java8特性。 我遇到过这个迭代器-它对集合进行迭代。 比如,我希望它从第2个值开始,然后迭代到第2个最后一个值。或者类似的东西--或者其他元素。 我要怎么做?