【发布时间】:2017-10-11 12:25:53
【问题描述】:
Set<Malfunction> malfunctions= ...
for (final String guideword : guidewords) {
Malfunction malf = malfunctions.stream()
.filter(m -> m.getGuideword().equals(guideword))
.collect(Collectors.toList())
.get(0);
当我避免使用 guideword 变量,而是使用硬编码值,例如“some_reasonable_string”时,一切正常。
如果我使用循环中的guideword,则会出现问题:有一个Set<Hazard>,它应该并且应该填写在malfunctions中,但后来在malf中为空>.
【问题讨论】:
-
那么
Set<Hazard>是什么,你在用它做什么?你能提供一个minimal reproducible example吗? -
除了
collect()和get()你可以只使用findFirst().get()(前提是过滤后至少有一个元素)。
标签: java lambda java-8 closures java-stream