Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 得到笛卡尔积?_Java_List_Collections - Fatal编程技术网

Java 得到笛卡尔积?

Java 得到笛卡尔积?,java,list,collections,Java,List,Collections,我有两份清单: List<Integer> partnerIdList; List<Integer> platformIdList; 列出合作伙伴列表; 列表平台列表; 我需要得到这些列表的笛卡尔积,如下所示: List<Pair<Integer, Integer> > partnerPlatformPairList; 列出partnerPlatformPairList; 其中Pair是来自org.apache.commons.lang3.

我有两份清单:

List<Integer> partnerIdList;
List<Integer> platformIdList;
列出合作伙伴列表;
列表平台列表;
我需要得到这些列表的笛卡尔积,如下所示:

List<Pair<Integer, Integer> > partnerPlatformPairList;
列出partnerPlatformPairList;
其中
Pair
是来自
org.apache.commons.lang3.tuple.Pair
包的类

我怎么能轻松做到这一点?apache commons库中有一些吗?

有一个。你可以调查一下。它基本上是根据列表的数量和列表计数来运行循环。它将减少您的编码工作,但基本原理保持不变

使用以下代码

for (int i = 0; i < partnerIdList.size(); i++)
        for (int j = 0; j < platformIdList.size(); j++)
            partnerPlatformPairList.add(new Pair<Integer, Integer>(partnerIdList.get(i), platformIdList.get(j)));
for(int i=0;i
有一个。你可以调查一下。它基本上是根据列表的数量和列表计数来运行循环。它将减少您的编码工作,但基本原理保持不变

使用以下代码

for (int i = 0; i < partnerIdList.size(); i++)
        for (int j = 0; j < platformIdList.size(); j++)
            partnerPlatformPairList.add(new Pair<Integer, Integer>(partnerIdList.get(i), platformIdList.get(j)));
for(int i=0;i
如果您不想使用外部解决方案、库,您可以用代码编写自己的版本:

public static <T, U> List<Pair<T, U>> cartesianProduct(List<T> list1, List<U> list2) {
    List<Pair<T, U>> result = new ArrayList<>();
    for (T el1: list1) {
        for (U el2 : list2) {
            result.add(Pair.of(el1, el2));
        }
    }
    return result;
}
公共静态列表卡特尔产品(列表1、列表2){
列表结果=新建ArrayList();
对于(TEL1:list1){
对于(U el2:list2){
添加(一对(el1,el2));
}
}
返回结果;
}

如果您不想使用外部解决方案、库,您可以用代码编写自己的版本:

public static <T, U> List<Pair<T, U>> cartesianProduct(List<T> list1, List<U> list2) {
    List<Pair<T, U>> result = new ArrayList<>();
    for (T el1: list1) {
        for (U el2 : list2) {
            result.add(Pair.of(el1, el2));
        }
    }
    return result;
}
公共静态列表卡特尔产品(列表1、列表2){
列表结果=新建ArrayList();
对于(TEL1:list1){
对于(U el2:list2){
添加(一对(el1,el2));
}
}
返回结果;
}
公共无效笛卡尔(){
List array1=新的ArrayList();
List array2=新的ArrayList();
List partnerPlatformPairList=new ArrayList();
对于(int i=0;i
公共无效笛卡尔(){
List array1=新的ArrayList();
List array2=新的ArrayList();
List partnerPlatformPairList=new ArrayList();
对于(int i=0;i
导入java.util.ArrayList;
导入java.util.List;
公共类轨道{
公共静态void main(字符串x[]{
List partnerIdList=new ArrayList();
List platformIdList=新建ArrayList();
对于(inti=2;i
import java.util.ArrayList;
导入java.util.List;
公共类轨道{
公共静态void main(字符串x[]{
List partnerIdList=new ArrayList();
List platformIdList=新建ArrayList();

对于(int i=2;沿中的笛卡尔产品线的等距线可能对您有用请参考类似的解决方案:[Java中列表的笛卡尔乘积][1][1]:沿中的笛卡尔产品线的东西可能对您有用请参考类似的解决方案:[Java中列表的笛卡尔乘积][1][1]: