java - 获取列表元素的组合列表

标签 java combinatorics

假设我有 3 个列表:['q','w']、['a','s']、['z','x']。如何从这些列表中获取可能组合的列表?所以我得到一个列表 [['q','a','z'],['q','s','z']] 等等。我为两个创建了一个方法,但无法为 N 个列表找到一个:

static <E> ArrayList combine(ArrayList<E> one,ArrayList<E> two)
{
    ArrayList<ArrayList<E>> combs=new ArrayList<ArrayList<E>>();
    for(E e:one)
    {
        for(E e2:two)
        {
            ArrayList ps=new ArrayList();
            ps.add(e);
            ps.add(e2);
            combs.add(ps);
        }
    }
    return combs;
}

我发现这是由 Guava 的 Sets.cartesianProduct 完成的。

最佳答案

对于懒惰的人(使用 Guava):

Set<List<String>> result = Sets.cartesianProduct(
                ImmutableSet.of("q", "w"),
                ImmutableSet.of("a", "s"),
                ImmutableSet.of("z", "x")
        );

System.out.println(result);

输出:

[ [q, a, z], [q, a, x], [q, s, z], [q, s, x], [w, a, z], [w, a, x], [w, s, z], [w, s, x] ]

关于java - 获取列表元素的组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456449/

相关文章:

c++ - 具体卡牌组合指数如何计算

Python - 仅当条件适用时的组合

算法:打印字符序列的正确索引

c++ - 字符串二进制组合

r - 从一列制作两列,涵盖所有组合

java - 奇怪的多线程行为

Java从其他类创建ArrayList的实例

java - JPA 连接与 EntityManager 关闭

java - 考虑补充字符的 Java 中字符串的总字符数(不是代码单元)

java - 正则表达式在java中查找连字符的文本