Java 使用参数数目未知的guava Sets.cartesianProduct

Java 使用参数数目未知的guava Sets.cartesianProduct,java,guava,cartesian-product,Java,Guava,Cartesian Product,我陷入了以下问题: 我有一个动态项目列表,定义如下: List<Object> itemList = ArrayList(ArrayList<Object1, Object2, Double[]>) private Set<List<Double>> getValueCombinations() { final List<Set<Double>> valuesOfInnerArrays = new ArrayLis

我陷入了以下问题:

我有一个动态项目列表,定义如下:

List<Object> itemList = ArrayList(ArrayList<Object1, Object2, Double[]>)
private Set<List<Double>> getValueCombinations() {
    final List<Set<Double>> valuesOfInnerArrays = new ArrayList<>();
    // Loop over the list of device data sets in the class and add the value vectors to a list for further
    // processing and cartesian product generation.
    for (Integer indexCounter = 0; indexCounter < outerArrayList.size(); indexCounter++) {
        final List<Object> innerDataSet = (List<Object>) deviceDataSets.get(indexCounter);
        final SortedSet<Double> >innerDoubleArray = new TreeSet<>((List<Double>) innerDataSet.get(2));
        valuesOfInnerArrays.add(innerDoubleArray);
    }

    return Sets.cartesianProduct(valuesOfInnerArrays);
}
在我找到的所有示例中,他们总是使用已知集合调用cartesianProduct,但我无法做到:

Set<Double> first = ImmutableSet.of(1., 2.);
Set<Double> second = ImmutableSet.of(3., 4.);
Set<List<Double>> result =
Sets.cartesianProduct(ImmutableList.of(first, second));
Set first=ImmutableSet.of(1,2.);
设置秒=不可变设置(3,4.);
定局=
set.cartesianProduct(不可变列表of(第一、第二));
最后,我想要的是存储在内部Double[]数组中的所有数字的组合

感谢您的帮助。

多亏我解决了我的问题。我的最终解决方案如下所示:

List<Object> itemList = ArrayList(ArrayList<Object1, Object2, Double[]>)
private Set<List<Double>> getValueCombinations() {
    final List<Set<Double>> valuesOfInnerArrays = new ArrayList<>();
    // Loop over the list of device data sets in the class and add the value vectors to a list for further
    // processing and cartesian product generation.
    for (Integer indexCounter = 0; indexCounter < outerArrayList.size(); indexCounter++) {
        final List<Object> innerDataSet = (List<Object>) deviceDataSets.get(indexCounter);
        final SortedSet<Double> >innerDoubleArray = new TreeSet<>((List<Double>) innerDataSet.get(2));
        valuesOfInnerArrays.add(innerDoubleArray);
    }

    return Sets.cartesianProduct(valuesOfInnerArrays);
}
private Set getValueCombinations(){
最终列表值fInnerArrays=new ArrayList();
//在类中的设备数据集列表上循环,并将值向量添加到列表中以供进一步使用
//加工和笛卡尔产品生成。
对于(整数indexCounter=0;indexCounterinnerDoubleArray=新树集((列表)innerDataSet.get(2));
添加(innerDoubleArray);
}
返回集合.cartesianProduct(内部数组的值);
}
此外,我还更改了输入列表的格式:

List<Object> itemList = ArrayList(ArrayList<Object1, Object2, List<Double>>)
List itemList=ArrayList(ArrayList)

这是否回答了您的问题?