笛卡儿积的java实现

笛卡⼉积的java实现
参考:
在⽹上查了很多笛卡⼉积的乘积,感觉程序都写得⽐较复杂,当看到上⾯的⽂章的时候,感觉豁然开朗,通俗易懂,所以,在笔者的代码下,将代码整理了⼀下。
⾸先,需要理解的是,笛卡尔积:多个集合的乘积。
我们可以想到如果,是两个集合的乘积,如何做运算呢?就是将前⼀个集合复制(后⼀个集合的元素数量)份,得到⼀个新的集合,然后遍历集合,与后⼀个集合做连接。
知道了两个集合的相乘,我们来看看3个集合相称,我们可以先算前两个集合的乘积,算出来的新的集合,再与下⼀个集合相称,这样,我们每次做运算本质都是两个集合的乘积。话不多说,直接看代码:
import java.util.ArrayList;
/**
* @author
* @create 2018-04-04 19:21
**/
public class Test {
/**
* 计算多个集合的笛卡尔积
范文同
懦艮* @param dimValues 存储多个集合的⼆维list
* @return
*/
private static ArrayList<String> descartes(ArrayList<ArrayList<String>> dimValues) {
ArrayList<String> result = new ArrayList<String>();
for (int i = 0 ; i < dimValues.size() ; i++){
ArrayList<String> curList = (i);
if(0 == i){//如果是⾸个集合,直接放输⼊到结果集中2011第六届中国作家富豪榜
for (String tempStr : curList){
result.add(tempStr);
}
continue;
}
selfCopy(result,curList);//将前⼀个集合的乘积 result,⾃我复制 curListCount 份,并将当前集合的元素追加到上边
}
return result;
}
/**
* 根据当前的集合,将之前的结果集复制
* @param result  之前的集合相称的结果集
* @param curList  当前集合
bsr
*/
private static void selfCopy(ArrayList<String> result,ArrayList<String> curList) {
ArrayList<String> tempList = new ArrayList<String>();
for (String strOfCurList : curList){
for (String strOfResult : result){
tempList.add( strOfResult + strOfCurList );//因为这⾥是字符串集合相称,那么其实就是字符串相加。
}
}
result.clear();
for (String tempStr : tempList){
result.add(tempStr);
}
}
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<String>();
a.add("a1");
a.add("a2");
ArrayList<String> b = new ArrayList<String>();
b.add("b1");
b.add("b2");
ArrayList<String> c = new ArrayList<String>();
c.add("c1");
c.add("c2");
c.add("c3");
ArrayList<String> d = new ArrayList<String>();跟腱撕裂
d.add("d1");
d.add("d2");
d.add("d3");
ArrayList<ArrayList<String>> dimValue = new ArrayList<ArrayList<String>>();
dimValue.add(a);
dimValue.add(b);
dimValue.add(c);
dimValue.add(d);
ArrayList<String> result = descartes(dimValue);
for (String temp : result){
勒雪氏病
System.out.println(temp);
}
}
}
  这种实现,个⼈觉得是不是⽐较通俗易懂,欢迎⼤家纠正其中未发现的错误。。。

本文发布于:2024-09-20 22:39:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/584227.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:集合   乘积   相称
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议