慕娘9325324
其中的关键是:不要以意外的方式使用API,即使它实现了您的直接目标。这种方法将来可能会中断,而且对未来的维护人员来说也是不清楚的。将其分解为多个操作是无害的,因为它们是不同的操作。那里是以一种不明确和意外的方式使用API的危害,如果这种特定的行为在Java的未来版本中被修改,可能会产生影响。使用forEach在此操作中,将向维护人员清楚地表明预定的每一个元素的副作用accounts,并且您正在执行一些可以使其发生变异的操作。从某种意义上讲,这也是比较传统的peek是一个中间操作,在终端操作运行之前不会对整个集合进行操作,但是forEach确实是终点站。这样,您就可以围绕您的行为和代码流提出强有力的论点,而不是问有关以下问题的问题:peek会表现得和forEach在这种情况下。accounts.forEach(a -> a.login());List loggedInAccounts = accounts.stream()
.filter(Account::loggedIn)
.collect(Collectors.toList());