在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方法将每个元素映射为一个新的流,并将所有新流的元素合并到一个新的流中。