使用Guava来计算笛卡尔积

简介:

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

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

 

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

1
2
3
4
5
6
7
8
9
10
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]

 

目录
相关文章
|
3月前
|
数据采集 机器学习/深度学习 人工智能
什么是笛卡尔积
什么是笛卡尔积
189 0
|
11月前
|
机器学习/深度学习
集合论—笛卡尔积与二元关系
集合论—笛卡尔积与二元关系
|
4月前
|
芯片
求集合的笛卡尔乘积
求集合的笛卡尔乘积
34 0
数量积、向量积与混合积
数量积、向量积与混合积
|
SQL 存储 数据库
工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)
在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个表,而如果大多查询只涉及到一个表的,那么那个表也往往低于第三范式,存在大量冗余和异常。
231 0
工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)
|
存储 关系型数据库 MySQL
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
758 0
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
|
分布式计算 MaxCompute
如何绕过ODPS不支持的笛卡尔积的限制
`` select * from pn_tablename a join pn_tablename b; `` odps不支持无 on 的 join 会报 ODPS-0130252 Cartesian product is not allowed without map join 的错误 可以.
12113 0
笛卡尔积与连接查询
连接查询 (左连接 右连接 内连接)
146 0
|
SQL 分布式计算 大数据
SparkSQL中产生笛卡尔积的几种典型场景以及处理策略
本文介绍都有哪些情况会产生笛卡尔积,以及如何事前"预测"写的SQL会产生笛卡尔积从而避免
SparkSQL中产生笛卡尔积的几种典型场景以及处理策略