Есть код (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);
что не есть хорошо. Как сделать правильно?
Или так:
Set<Session> set = this.sessions.values()
.stream()
.filter(Session::isSavingRequired)
.peek(s -> s.setSavingRequired(false))
.collect(Collectors.toSet());
Не стоит применять потоки данных всегда и везде. Если алгоритм требует состояния, значит функциональный подход не для него.
Можно сделать следующим образом:
Set<Session> set = this.sessions.values()
.stream()
.filter(Session::isSavingRequired)
.map(session -> {
session.setSavingRequired(false);
return session;
})
.collect(Collectors.toSet());
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть ли принципиальная разница между использованием superclone() и созданием нового объекта с помощью new?
Пишу чат элементарныйЗапуская сервер - вижу, что количество сессий всегда равняется "1", сколько бы вкладок или браузеров я бы не открыл
Что значит "Метод или операция не реализована"? У меня в этом коде ошибка: