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);