区别:
map mapper返回R,flatMap mapper返回Stream<R>
官网解释
1,<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
2,<R> Stream<R> map(Function<? super T,? extends R> mapper)
map(Function f)
接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素,返回的数据还是一个流。
flatMap(Function f)
接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。
示例代码
import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class MapFlatMap { public static void main(String[] args) { List<String> list1 = new ArrayList<>(); list1.add("A"); list1.add("B"); List<String> list2 = new ArrayList<>(); list2.add("C"); list2.add("D"); List<List<String>> list = new ArrayList<>(); list.add(list1); list.add(list2); Stream stream1 = list.stream().map(i-> { List<String> listT = new ArrayList<>(); i.stream().forEach(j->listT.add("map1>" + j)); return listT; }); stream1.forEach(System.out::println); System.out.println("----------------------"); Stream stream2 = list.stream().flatMap(i->i.stream().map(j->"flatMap2>" + j)); stream2.forEach(System.out::println); } }
标签:map,flatmap,java,Stream,stream,List,add From: https://www.cnblogs.com/bigjor/p/17009630.html