Java中的flatMap和map都是可以用來處理集合數(shù)據(jù)的函數(shù)式接口,兩者雖然有相似的作用,但在使用時(shí)卻存在著不同的區(qū)別。
map通過將一個(gè)元素轉(zhuǎn)換為另一個(gè)元素來創(chuàng)建新的集合,而flatMap則通過將一個(gè)元素映射到多個(gè)元素來創(chuàng)建新的集合。
// map使用舉例 ListnumList = Arrays.asList(1, 2, 3, 4, 5); List result = numList.stream().map(num ->num * 2).collect(Collectors.toList()); System.out.println(result);// 輸出結(jié)果:2, 4, 6, 8, 10 // flatMap使用舉例 List list1 = Arrays.asList("Hello", "World"); List list2 = Arrays.asList("Welcome", "To", "Java"); List >list = Arrays.asList(list1, list2); List
result = list.stream().flatMap(Collection::stream).collect(Collectors.toList()); System.out.println(result);// 輸出結(jié)果:Hello, World, Welcome, To, Java
從代碼的示例可以看出,map將每一個(gè)元素進(jìn)行操作后得到一個(gè)新的集合,而flatMap將一個(gè)集合中的每個(gè)元素映射到多個(gè)元素后再進(jìn)行操作,最終得到一個(gè)扁平化的新集合。
總之,map和flatMap在使用時(shí)要根據(jù)具體情況來選擇使用哪一種,能夠更好地滿足業(yè)務(wù)需求。