7.6 解决方案:peak

遗憾的是,流有一个方法让你能查看每个值,同时能继续操作流。这就是peek方法。例7-18使用peek方法重写了前面的例子,输出流中的值,同时避免了重复的流操作。

例7-18 使用peek方法记录中间值

  1. Set<String> nationalities
  2. = album.getMusicians()
  3. .filter(artist -> artist.getName().startsWith("The"))
  4. .map(artist -> artist.getNationality())
  5. .peek(nation -> System.out.println("Found nationality: " + nation))
  6. .collect(Collectors.<String>toSet());

使用peek方法还能以同样的方式,将输出定向到现有的日志系统中,比如log4jjava.util.logging或者slf4j