In Java Streams ist Peek eigentlich nur zum Debuggen?

Ich lese über Java-Streams und entdecke dabei neue Dinge. Eines der neuen Dinge, die ich gefunden habe, war daspeek() Funktion. Fast alles, was ich auf Peek gelesen habe, besagt, dass es zum Debuggen Ihrer Streams verwendet werden sollte.

Was wäre, wenn ich einen Stream hätte, in dem jedes Konto einen Benutzernamen, ein Kennwort sowie eine Methode login () und loginIn () hat.

Ich habe auc

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

un

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

Warum wäre das so schlimm?

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

Now soweit ich das beurteilen kann macht das genau das was es machen soll. Es

Nimmt eine Liste von KontenVersucht, sich bei jedem Konto anzumeldenFiltert alle Konten heraus, die nicht angemeldet sindSammelt die angemeldeten Konten in einer neuen Liste

Was ist der Nachteil von so etwas? Aus irgendeinem Grund sollte ich nicht fortfahren? Und wenn nicht diese Lösung, was dann?

Die ursprüngliche Version dieser Methode verwendete die .filter () -Methode wie folgt:

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

Antworten auf die Frage(12)

Ihre Antwort auf die Frage