Java Stream Api - 是否可以保留原始 map() 输入?

标签 java java-8 java-stream

我知道 map() 操作不会保持状态,但是在某些情况下这可能会有所帮助,例如:

List<String> somePageLinks = ... //populate the list

//crawl those pages
somePageLinks.stream().map( link -> CrawlerFactory.getCrawler( link ).
                       forEach( crawler.getContent( link );

问题是“链接”不再可用于 forEach()。有什么办法可以克服这个问题吗?

谢谢!

最佳答案

一种方法是将link存储在CrawlerFactory.getCrawler(link)创建的实例中,这样就不用传递link 再次到 crawler.getContent

另一种方法是让 map 生成某种“Pair”对象,其中包含 linkCrawlerFactory.getCrawler (link) 返回的实例。这将使 linkcrawlerforEach 方法中可用。

关于Java Stream Api - 是否可以保留原始 map() 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960009/

相关文章:

包含的 Java 8 过滤器

java - 查询返回大量重复记录

java - 程序类型已经存在 : info. hoang8f.fbutton.BuildConfig

java - 如何将不兼容类型的对象流式传输到列表中?

java - 在 Java 8 中使用 Java 7 比较器

java - 如何从 CompletableFuture 中抛出自定义异常?

java - Stream<BigDecimal> 是否有可变缩减操作(收集器)?

java - Float - 数据类型混淆

java - Hibernate异常: No Hibernate Session bound to thread

java - Stream API 使用的方便复杂性?