В потоках Java действительно заглядывать только для отладки?

Я читаю о потоках Java и открываю для себя новые вещи. Одна из новых вещей, которую я нашел, былаpeek() функция. Почти все, что я читал в peek, говорит, что его следует использовать для отладки ваших потоков.

Что делать, если у меня был поток, где у каждой учетной записи есть имя пользователя, поле пароля и метод login () и loggedIn ().

у меня тоже есть

Consumer<Account> login = account -> account.login();

а также

Predicate<Account> loggedIn = account -> account.loggedIn();

Почему это так плохо?

List<Account> accounts; //assume it's been setup
List<Account> loggedInAccount = 
accounts.stream()
    .peek(login)
    .filter(loggedIn)
    .collect(Collectors.toList());

Теперь, насколько я могу судить, это именно то, что он должен делать. Это;

Принимает список аккаунтовПытается войти в каждую учетную записьОтфильтровывает любой аккаунт, который не вошел в системуСобирает зарегистрированные аккаунты в новый список

В чем недостаток того, чтобы делать что-то подобное? По какой причине я не должен продолжать? Наконец, если не это решение, то что?

Исходная версия этого использовала метод .filter () следующим образом;

.filter(account -> {
        account.login();
        return account.loggedIn();
    })

Ответы на вопрос(6)

Ваш ответ на вопрос