有代码(Java 7):
Set<Session> set = new HashSet<>();
for (Session session : this.sessions.values()) { // sessions -> HashMap<String, Session>
if (session.isSavingRequired()) {
session.setSavingRequired(false);
set.add(session);
}
}
如何将上述代码转换为 java 8 变体?我试过这样:
Set<Session> set = this.sessions.values()
.stream()
.filter(Session::isSavingRequired)
.collect(Collectors.toSet());
问题是在上面的代码中,我遗漏了一行session.setSavingRequired(false);,这不好。怎么做才对?
或者像这样:
你不应该总是到处使用数据流。如果算法需要state,那么函数式方法不适合它。
可以这样做: