当在上使用外部迭代时,Iterable
我们使用break
或return
从增强的for-each
循环中获取:
for (SomeObject obj : someObjects) {
if (some_condition_met) {
break; // or return obj
}
}
我们如何break
或在Java 8 lambda表达式中return
使用内部迭代,例如:
someObjects.forEach(obj -> {
//what to do here?
})
如果需要,则不应使用forEach
,而应使用流中可用的其他方法之一。哪一个取决于你的目标是什么。
例如,如果此循环的目标是找到与某些谓词匹配的第一个元素:
Optional<SomeObject> result =
someObjects.stream().filter(obj -> some_condition_met).findFirst();
(注意:这不会迭代整个集合,因为流是惰性计算的-它将在与条件匹配的第一个对象处停止)。
如果你只想知道集合中是否存在条件为真的元素,则可以使用anyMatch:
boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);
在上使用外部迭代时,我们使用增强的for-each循环中的或作为: 如何使用Java 8 lambda表达式中的内部迭代来或:
有一个简单的: 以及任务对象的列表。如何通过使用获得每个作为的列表。我试过这个: 但它返回
假设我有一个方法将只读视图返回到成员列表中: 进一步假设客户机所做的只是立即对列表进行一次迭代。也许是为了把玩家放进一个JList或者别的什么。客户端没有存储对列表的引用以供以后检查! 对于这种常见的场景,我是否应该返回一个流呢? 还是返回流在Java中不是惯用的?流被设计成总是在创建它们的同一个表达式中“终止”吗?
为了最大限度地利用java8流和Spring4,我在来自Springs jsdbRestTem板的JDBC结果集上使用了流API,如下所示(代码缩短并简化): 这似乎很有效。客户端可以像这样使用流Api,而不用担心jdbc类 但是,当我重构(尝试将流提供给客户端方法)时,像这样: 我明白了 因此,数据似乎只能在方法。是否有一种干净的方法可以绕过这个问题,返回来自DB的元素的惰性流?假设具体化结果和
问题内容: 假设我有一个将只读视图返回到成员列表的方法: 进一步假设所有客户要做的就是立即遍历列表一次。也许将播放器放入JList之类。客户端就不能存储到列表的引用以便稍后进行检查! 在这种常见情况下,我应该返回流吗? 还是在Java中返回流非惯用语?流是否设计为始终在创建它们的相同表达式内被“终止”? 问题答案: 答案是一如既往的“取决于”。这取决于返回的集合的大小。这取决于结果是否随时间变化,
我有以下代码: 问题:是否可以替换 d - *我对这个问题的标题不太清楚-如果有问题,请编辑。 谢啦