在Java中,map和flatMap都是Stream接口中的方法,用于對流中的元素進行操作和轉換。它們的區別如下:
map方法:map方法用于對流中的每個元素應用一個函數,并將結果封裝為一個新的流。這意味著原始流中的每個元素都會被映射為一個新的元素,從而形成了新的流。 例如,對一個整數流中的每個元素進行平方操作,可以使用map方法:stream.map(x -> x * x)。
flatMap方法:flatMap方法也用于對流中的每個元素應用一個函數,并將結果轉換為一個新的流。但與map不同的是,flatMap方法會將每個元素的新流進行扁平化操作,將所有新流的元素合并到一個新的流中。 例如,假設有一個字符串流,每個字符串都包含多個單詞,我們想要將每個單詞提取出來并轉換為單獨的流。可以使用flatMap方法:stream.flatMap(str -> Arrays.stream(str.split(" ")))。 這樣就會得到一個包含所有單詞的新流。
總結: map方法將每個元素映射為一個新的元素,并將其封裝為一個新的流; flatMap方法將每個元素映射為一個新的流,并將所有新流的元素合并到一個新的流中。