天天看點

Stream 中的map 與flatMap 用法

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import net.sf.json.JSONArray;

public class Test {
	public static void main(String[] args) {

		List<String> strs = Arrays.asList("好,好,學", "習,天,天", "向,上");

		List<String[]> strArray = strs.stream().map(str -> str.split(",")).collect(Collectors.toList());

		JSONArray jsonArray = JSONArray.fromObject(strArray);

		System.out.println("strArray => " + jsonArray.toString());

		// flatMap與map的差別在于 flatMap是将一個流中的每個值都轉成一個個流,然後再将這些流扁平化成為一個流 。
		List<String> strList = strs.stream().map(str -> str.split(",")).flatMap(Arrays::stream)
				.collect(Collectors.toList());

		System.out.println("strList => " + strList);

	}

}
           

運作結果:

strArray => [["好","好","學"],["習","天","天"],["向","上"]]

strList => [好, 好, 學, 習, 天, 天, 向, 上]