我正在阅读有关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();
})