让我们假设开发中的一种非常正常的行为:我有一个 Collection 并且需要将此 Collection 映射到另一个对象。一个平面地图场景。
例子:
我们有一些方法必须返回一组源对象:
public Set<Source> getSources(String searchText);
让我们找出一种实现方式:
public Set<Source> getSources(String searchText) {
HashSet<Source> sources = new HashSet<>();
Set<String> urls = this.crawlerService.getUrls(searchText);
urls.forEach(url -> sources.add(Source.builder().url(url).build()));
return sources;
}
Java Stream 的另一种实现:
public Set<Source> getSources(String searchText) {
Set<String> urls = this.crawlerService.getUrls(searchText);
return urls.stream()
.flatMap(e -> Stream.of(Source.builder().url(e).build()))
.collect(Collectors.toSet());
}
我更喜欢流方式,但我有一些问题:转换为流和收集设置在性能方面有多昂贵?以这种方式使用 Stream 是可以接受的还是太过分了?还有其他一些使用 java Stream 来完成这种场景的最佳方法吗?
慕雪6442864
相关分类