我知道 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”对象,其中包含 link
和 CrawlerFactory.getCrawler (link) 返回的实例
。这将使 link
和 crawler
在 forEach
方法中可用。
关于Java Stream Api - 是否可以保留原始 map() 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960009/