Tag: peek

在Javastream中偷窥真的只用于debugging?

我正在阅读关于Javastream和发现新的东西,因为我走。 我发现的新东西之一是peek()函数。 我几乎读过的所有东西都说它应该用来debugging你的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()); 现在据我所知,这正是它打算做的。 它; 提供一个帐户清单 尝试login到每个帐户 过滤掉任何未login的帐户 将login帐户收集到新列表中 做这样的事情有什么缺点? 任何理由我不应该继续? 最后,如果不是这个解决scheme那么是什么? 这个原始版本使用.filter()方法如下; .filter(account -> { account.login(); return account.loggedIn(); })