以前实现笛卡尔积比较繁琐,使用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 进口

使用JAVA8新特性实现笛卡尔积相关推荐

  1. 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>

    需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...

  2. 【Java8新特性】关于Java8的Stream API,看这一篇就够了!!

    写在前面 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API(java.util.stream.*)  ,那什么是Stream API呢?Java8中 ...

  3. 【Java8新特性】浅谈方法引用和构造器引用

    写在前面 Java8中一个很牛逼的新特性就是方法引用和构造器引用,为什么说它很牛逼呢?往下看! 方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!这里需要注意的是:实现抽 ...

  4. java8新特性_Java8新特性之Date API|乐字节

    大家好,我是乐字节的小乐,上篇文章讲述了<Java8新特性之Optional>,接下来,小乐将接着讲述Java8新特性之Date API 2019日历 Java8之Date API Jav ...

  5. Java8 新特性之流式数据处理(转)

    转自:https://www.cnblogs.com/shenlanzhizun/p/6027042.html 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作 ...

  6. java8新特性_乐字节-Java8新特性-接口默认方法

    总概 JAVA8 已经发布很久,而且毫无疑问,java8是自java5(2004年发布)之后的最重要的版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性. Java8 新特性列表如下: 接 ...

  7. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  8. java8新特性_乐字节-Java8新特性-函数式接口

    上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...

  9. java8新特性简述

    Java8发布时间是2014年3月19日,距离今日已经很久了,那么Java8新特性你了解吗? java8是Java的一次重大升级,巨大的里程碑式的改进!! Java语言新特性: 1.与传统结合 -- ...

最新文章

  1. 7.4 程序示例--PCA for 加速学习-机器学习笔记-斯坦福吴恩达教授
  2. Pycharm运行时找不到文件问题
  3. python for循环语句的用法
  4. FZYZ-2071 A Simple Math Problem IX
  5. 第十周软件工程作业-每周例行报告
  6. 将数字转化为液晶显示屏的样子
  7. 牛逼了!PDF 版本 5000 页 Java 技术栈手册开放下载!
  8. 【Python】表白代码
  9. [RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点
  10. python卸载pip_python 怎样卸载pip
  11. c语言程序算一元二次方程,以实例跟我学C语言:如何求解一元二次方程的根
  12. 1-11摇号机java_11选5在线模拟摇号
  13. RabbitMQ第五个实操小案例——主题交换机(TopicExchange)
  14. CentOS无人值守安装
  15. 芬兰Vaisala温湿度变送器HMT330
  16. linux 源码编译 ./configure 的配置和用法
  17. 小技巧(10):使用Python绘制激活函数(Sigmoid、Tanh、ReLU、PReLU)图像
  18. 《ASP.NET程序设计教程》目录
  19. 二级页面全屏html,还是二级网页不能全屏怎么办? 爱问知识人
  20. 麒麟OS 强制设置短密码

热门文章

  1. PHP ADODB1.99版手册 (修正版)
  2. windows电脑使用Edge浏览器过程中偶发自动重启
  3. .net项目与下载包之间不兼容时,如何下载NuGet之前版本的包
  4. Android利用 libsuperuse执行shell命令或获取root权限
  5. 浏览器插件FeHelper学习:页面取色器
  6. Java中this关键字及this()方法的使用
  7. html搜索时关键字变数字,JavaScript正则方法replace实现搜索关键字高亮显示
  8. Python在线学习可以吗?靠不靠谱?
  9. JMS之ActiveMQ下载安装
  10. 真有人买实物原油抄底!普通人直接上手,一笔利润30%