使用JAVA8新特性實現笛卡爾積

以前實現笛卡爾積比較繁瑣,使用java8的新特性提高了代碼的簡潔度,也更容易實現


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

/**
 *  @author lgz
 */
public class DescartesDemo {

    public static void main(String[] args) {
        List<String> colorList = Arrays.asList("紅色", "黑色", "金色");
        List<String> sizeList = Arrays.asList("32G", "64G");
        List<String> placeList = Arrays.asList("國產", "進口");

        List<String> descartesList = descartes(colorList, sizeList, placeList);
        descartesList.forEach(System.out::println);

    }

    public static List<String> descartes(List<String>... lists) {
        List<String> tempList = new ArrayList<>();
        for (List<String> list : lists) {
            if (tempList.isEmpty()) {
                tempList = list;
            } else {
            	//java8新特性,stream流
                tempList = tempList.stream().flatMap(item -> list.stream().map(item2 -> item + " " + item2)).collect(Collectors.toList());
            }
        }
        return tempList;
    }
}

運行結果

紅色 32G 國產
紅色 32G 進口
紅色 64G 國產
紅色 64G 進口
黑色 32G 國產
黑色 32G 進口
黑色 64G 國產
黑色 64G 進口
金色 32G 國產
金色 32G 進口
金色 64G 國產
金色 64G 進口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章