[java]Stream API——map和flatMap的区别

java

map方法

   map的含义为映射。是指对于Stream中包含的每一个元素使用给定的转换函数进行转换。

   map传入的Lambda表达式必须是Function实例,参数可以为任意类型,而其返回值也是任性类型,javac会根据实际情景自行推断。

flatMap方法

   flatMap的含义为平铺映射。flatMap方法与map方法类似,都是将原Stream中的每一个元素通过转换函数转换。不同的是,flatMap是对结果进行平铺。

   flatMap传入的Lambda表达式必须是Function实例,参数可以为任意类型,而其返回值类型必须是一个Stream。

示例

public static Stream<Character> characterStream(String s){

List<Character> result = new ArrayList<>();

for (char c : s.toCharArray())

result.add(c);

return result.stream();

}


String w = "your name";

Stream<Stream<Character>> mapResult = words.map(w -> characterStream(w));

Stream<Character> flatMapResult = words.flatMap(w -> characterStream(w));

map的结果mapResult:[ ...['y', 'o', 'u', 'r'], ['n', 'a', 'm', 'e']]

faltMap的结果flatMapResult:['y', 'o', 'u', 'r', 'n', 'a', 'm', 'e']

以上是 [java]Stream API——map和flatMap的区别 的全部内容, 来源链接: utcz.com/z/392409.html

回到顶部