天天看點

java 笛卡爾積_使用Guava來計算笛卡爾積

以前做項目的時候計算笛卡爾積的時候,總是使用各種for循環來嵌套,最後往往在Sonar代碼檢查的時候總是會報警說for循環嵌套過深。

今天才知道Guava原來已經為我們提供了優雅的計算笛卡爾積的方法。

比如我們要計算3個List的笛卡爾積,每個list的内容都是['a', 'b', 'c'], 請看下面的代碼:

public class CartesianProductUtil {

public static void main(String[] args) {

ImmutableSet charList = ImmutableSet.of('a', 'b', 'c');

Set> set = Sets.cartesianProduct(charList, charList, charList);

for (List 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]