6
在Java流中,peek真的仅用于调试吗?
我正在阅读有关Java流的信息,并在不断学习中发现新事物。我发现的新peek()功能之一就是功能。我偷看的几乎所有内容都说应将其用于调试Streams。 如果我有一个Stream,其中每个帐户都有一个用户名,密码字段以及一个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(); })
137
java
java-8
java-stream
peek