JavaStreamAPI-map\flatMap
在Java Stream API中,flatMap()
和map()
都是用于对流中的元素进行转换操作的方法,但它们在处理方式上有一些区别。
map()
方法用于将流中的每个元素映射到另一个值。它接受一个函数作为参数,该函数定义了将输入元素转换为输出元素的逻辑。map()
方法的输出流与输入流的元素个数相同。
例如,假设我们有一个整数流,我们希望将每个整数都乘以2。可以使用map()
方法来实现这一转换:
1 | List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); |
flatMap()
方法与map()
方法类似,但是它的输出流不再是一个元素的流,而是将每个元素转换为流的内容,然后将这些流扁平化为单个流。换句话说,它将嵌套的流结构展开。
通常,在处理嵌套集合或处理一对多关系的场景下,flatMap()
方法非常有用。
例如,假设我们有一个包含多个单词的字符串列表,我们想要获取所有的不重复单词列表。可以使用flatMap()
方法将每个字符串拆分为单词,并将所有的单词扁平化为一个流,然后通过distinct()
方法去除重复的单词:
1 | List<String> words = Arrays.asList("Hello", "World"); |
总结一下,map()
方法将每个元素映射为另一个值,而flatMap()
方法将每个元素映射为流,并将这些流扁平化为一个流。这些方法的选择取决于你对数据结构的需求和转换逻辑。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Warms!