1 回答

TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊
就性能而言,轉(zhuǎn)換為流和收集為設(shè)置的成本有多高?以這種方式使用 Stream 是可以接受的還是太過分了?
首先,流已經(jīng)比簡單地創(chuàng)建一個新集合并使用循環(huán)向其中添加元素要昂貴,但除非您進(jìn)行基準(zhǔn)測試,否則您不會注意到這種成本。因此,繼續(xù)對這兩個示例進(jìn)行基準(zhǔn)測試。
如果您看一下 java 是如何實現(xiàn)流的,您會意識到它只是現(xiàn)有流的靈活包裝器java.util.Iterator,因此使用流所獲得的只是它們的靈活性(有時還有速度,但這不應(yīng)該是賣點)
至于您的流示例,通過使用創(chuàng)建中間流會導(dǎo)致流變得昂貴flatMap。所有flatMap要做的就是撤消您在其中所做的操作并返回流的內(nèi)容,因此您可能剛剛使用過map。
public Set<Source> getSources(String searchText) {
? Set<String> urls = this.crawlerService.getUrls(searchText);
? return urls.stream()
? ? ? ? ? ? ?.map(e -> Source.builder().url(e).build())
? ? ? ? ? ? ?.collect(Collectors.toSet());
}
添加回答
舉報