JAVA8 lambda中map和flatMap

 lambda中map 是对流元素进行转换,flatMap 是对流中的元素(集合)进行平铺后合并,即对流中的每个元素平铺后又转换成为了 Stream 流。 

flatMap 首先将一个函数应用于元素,然后将其展平,当你需要将 [[a,b,c],[d,e,f],[x,y,z]] 具有两个级别的数据结构转换为 [a,b,c,d,e,f,x,y,z] 这样单层的数据结构时,就选择使用 flatMap 处理。

如果是 [a,b,c,d,e,f,x,y,z] 转换为大写 [A,B,C,D,E,F,X,Y,Z] 这样单层转换,就使用 map 即可。

flatMap 举个例子:

世界对象world中包含很多个国家,每个国家中又包含很多个城市,每个城市中又包含很多个公园,要打印出所有的公园。

世界对象:world=[国家1,国家2,国家3...]

国家对象:country =[城市1,城市2,城市3...]

城市对象:city=[公园1,公园2,公园3...]

world.stream()

.flatMap(country -> country.getCities().stream())

.flatMap(city-> countryName.getCityParks().stream())

.forEach(System.out::print);
 
 
posted @ 2023-03-14 15:18  #庄生晓梦  阅读(1236)  评论(0编辑  收藏  举报