Java Guava笛卡尔积 [英] Java Guava CartesianProduct

查看:250
本文介绍了Java Guava笛卡尔积的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在通过编写小的代码片段来探索Java Guava库.这是我为找到 笛卡尔积 个n个集合. 此处的文档

I am exploring Java Guava Library by writing small snippets of code. Here is what I wrote for finding the cartesian product of n-sets. Documentation here

//allLists populated above
...
List<Set> interimList = new ArrayList<Set>();
for(List<String> tmp : allLists) //converting List<List> to List<Set> 
{
    Set interimSet   = new HashSet(tmp);
    interimList.add(interimSet);
}
System.out.println(interimList);
Sets.cartesianProduct(interimList);

但是这没有编译.最后一行Sets.cartesianProduct不接受List<Set>.但是根据文档,这不是它的签名吗?

But this is not compiling. The last line Sets.cartesianProduct is not accepting List<Set>. But according to documentation isn't that its signature?

public static <B> Set<List<B>> cartesianProduct(List<? extends Set<? extends B>> sets)

错误消息: Cannot Resolve method cartesianProduct(java.util.List<java.util.Set)

推荐答案

问题是您创建的是原始的Set,而不是通用的.

The problem is you have created a raw Set, instead of a generic one.

会发生什么情况,您正在尝试将List<Set<Object extends String>>传递给Sets.cartesianProduct(),这就是为什么您收到编译类型错误的原因.

What happens is you're trying to pass a List<Set<Object extends String>> to the Sets.cartesianProduct() and this is why you're receiving a compile-type error.

它将编译:

List<Set<String>> interimList = new ArrayList<Set<String>>();
//converting List<List<String>> to List<Set<String>>
for (List<String> tmp : allLists) { 
    Set<String> interimSet   = new HashSet<String>(tmp);
    interimList.add(interimSet);
}
System.out.println(interimList);
Sets.cartesianProduct(interimList);

这篇关于Java Guava笛卡尔积的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆