18-结果分析
结果分析
本案例中的 peek()
方法分别在两种不同场景下统计流中的元素个数,并输出相关信息到控制台中。
在第6章中已经提到, Stream
包含一个源、0个或者多个中间操作,以及一个结束操作。第一个案例的结束操作是 count()
方法,由于该方法不需要通过处理元素集来计算返回值,因此 peek()
方法将永远不会执行。因此在控制台中也不会看到由 peek()
方法输出的任何信息,而 counter
变量的返回值也将是0。
第二个案例有所不同。它的结束操作是 forEach()
方法,在这种情况下,流中的所有元素都会被处理,因此将在控制台中看到来自 peek()
方法和 forEach()
方法的消息,而 counter
变量的最终结果是1000。
peek()
方法是流的中间操作,像其他中间操作一样,它们都是“懒执行”的,只处理必要的元素。因此第一个案例的中间操作没有执行也就非常好理解了。