以前做项目的时候计算笛卡尔积的时候,总是使用各种for循环来嵌套,最后往往在Sonar代码检查的时候总是会报警说for循环嵌套过深。

今天才知道Guava原来已经为我们提供了优雅的计算笛卡尔积的方法。

比如我们要计算3个List的笛卡尔积,每个list的内容都是['a', 'b', 'c'], 请看下面的代码:

public class CartesianProductUtil {

    public static void main(String[] args) {
ImmutableSet<Character> charList = ImmutableSet.of('a', 'b', 'c');
Set<List<Character>> set = Sets.cartesianProduct(charList, charList, charList);
for (List<Character> characters : set) {
System.out.println(characters);
}
}
}

  输出为:

[a, a, a]
[a, a, b]
[a, a, c]
[a, b, a]
[a, b, b]
[a, b, c]
[a, c, a]
[a, c, b]
[a, c, c]
[b, a, a]
[b, a, b]
[b, a, c]
[b, b, a]
[b, b, b]
[b, b, c]
[b, c, a]
[b, c, b]
[b, c, c]
[c, a, a]
[c, a, b]
[c, a, c]
[c, b, a]
[c, b, b]
[c, b, c]
[c, c, a]
[c, c, b]
[c, c, c]

最新文章

  1. kettle系列-4.kettle定制化开发工具类
  2. Win7&amp;Ubuntu12.04 双系统引导问题
  3. 微信签名算法的服务端实现(.net版本)
  4. TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop
  5. php实现文件安全下载
  6. C#学习笔记(与Java、C、C++和Python对比)
  7. 一个有趣的模拟光照的shader(类似法线贴图)
  8. ubuntu 下telnet 操纵memcache 实现
  9. Spring配置扫描mybatis的mapper文件注意:
  10. andengine游戏引擎总结基础篇
  11. (简单) POJ 2352 Stars,Treap。
  12. java-生产者消费者模式
  13. Ibatis XML 配置文件注释引起错误及解决方案
  14. Effective Java 第三版——83. 明智谨慎地使用延迟初始化
  15. postman(七):运行集合,看所有请求执行结果
  16. 03-树2 List Leaves(25)
  17. Mybatis-Plus3.0入门手册
  18. android--------面试题收集
  19. 20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
  20. CF475C. Kamal-ol-molk&#39;s Painting

热门文章

  1. c++ 副本构造器
  2. QT 智能提示设置
  3. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
  4. class文件概述
  5. android和httpClient
  6. python环境搭建-Linux系统下python2.6.6升级python3.5.2步骤
  7. hibernate用setResultTransformer转换
  8. springMVC之applicationcontext.xml配置说明
  9. iOS开发--换肤简单实现以及工具类的抽取
  10. iOS开发小技巧-修改SliderBar指针的样式(牢记这个方法,只能通过代码来修改)