当前位置: 首页 > news >正文

长春公司推广网站长沙房地产网站设计

长春公司推广网站,长沙房地产网站设计,中国建筑网建设通证书查询,电商流量平台问题场景#xff1a;比如说一件商品有3中属性#xff0c;每个属性又有3种不同的值#xff0c;那么此时问#xff0c;这几种属性可能的组合性#xff0c;相信你很快就得到结果为33327种#xff0c;此时你可以实现的方式可以为三个for循环嵌套来实现#xff0…问题场景比如说一件商品有3中属性每个属性又有3种不同的值那么此时问这几种属性可能的组合性相信你很快就得到结果为33327种此时你可以实现的方式可以为三个for循环嵌套来实现那么如果场景变了如果是4种属性那你可能就要4个for循环那么如果此时又变成10个那是不是要用10个循环了此时的代码就显得笨重并且不易读所以此时我们就可以用递归实现此业务场景。**解决思路1、可以将相同属性的值放到一个List中规定一个List的子类如ArrayList将所有的相同属性值都放到一个ArrayList中去此时有多少个属性就可以得到多少个封装了相同属性值的ArrayList。2、将上述生成的所有的ArrayList都放到个List中即List;3、然后将上述List中的ArrayList顺序两个组合成一个新的LinkedList此处新List子类型是为了和之前的ArrayList区分开来以便后续区分对待。详见代码代码示例public class MainTest {private static List returnList new ArrayList();public static void main(String[] args) {List stateLists new ArrayList();ArrayList als1 new ArrayList();als1.add(Color_1);als1.add(Color_2);ArrayList als2 new ArrayList();als2.add(Style_1);als2.add(Style_2);ArrayList als3 new ArrayList();als3.add(Size_1);als3.add(Size_2);ArrayList als4 new ArrayList();als4.add(High_1);als4.add(High_2);stateLists.add(als1);stateLists.add(als2);stateLists.add(als3);stateLists.add(als4);addstatement(stateLists);System.out.println(returnList:returnList.size() returnList);}public static void addstatement(List dataLists){int lendataLists.size();//判断List中的size是否小于2如果小于说明已经递归完成了if (len2){returnListdataLists;return;}//第一个是 ArrayList 或 LinkedList()int len0 ;if(dataLists.get(0) instanceof ArrayList){len0 ((ArrayList)dataLists.get(0)).size();} else {len0 ((LinkedList)dataLists.get(0)).size();}int len1 ;//第二个一定是 ArrayListArrayList secondList (ArrayList)dataLists.get(1);len1 ((ArrayList)dataLists.get(1)).size();//定义临时存放排列数据的集合默认的是ArrayList,新组合的是 LinkedListLinkedList tempdataListsnew LinkedList();//第一层for就是循环dataLists第一个元素的for (int i0;i//第二层for就是循环dataLists第二个元素的for (int j0;j//判断第一个元素如果是ArrayList说明循环才刚开始if (dataLists.get(0) instanceof ArrayList){ArrayList arr0 (ArrayList) dataLists.get(0);// 创建LinkedList类型与ArrayList区分开来用于将新的数据重新存储LinkedList arrnew LinkedList();arr.add(arr0.get(i));arr.add(secondList.get(j));//把排列数据加到临时的集合中tempdataLists.add(arr);} else {//到这里就明循环了最少一轮,即数据中只剩下两个一个是LinkedList一个是ArrayListLinkedList arrtemp (LinkedList) dataLists.get(0);LinkedList arrnew LinkedList();// 取出老的LinkedList数据赋值给新的LinkedList同时把第二个ArrayList中的数据赋值给新的LinkedListfor (int k0;karr.add(arrtemp.get(i).get(k));}arr.add(secondList.get(j));tempdataLists.add(arr);}}}//这是根据上面排列的结果重新生成的一个集合List newdataListsnew ArrayList();//把还没排列的数组装进来看清楚i2的喔因为前面两个数组已经完事了不需要再加进来了for (int i2;inewdataLists.add(dataLists.get(i));}//记得把我们辛苦排列的数据加到新集合的第一位喔不然白忙了newdataLists.add(0,tempdataLists);//你没看错我们这整个算法用到的就是递归的思想。addstatement(newdataLists);}}运行结果returnList:1 [[[Color_1, Style_1, Size_1, High_1], [Color_1, Style_1, Size_1, High_2], [Color_1, Style_1, Size_2, High_1], [Color_1, Style_1, Size_2, High_2], [Color_1, Style_2, Size_1, High_1], [Color_1, Style_2, Size_1, High_2], [Color_1, Style_2, Size_2, High_1], [Color_1, Style_2, Size_2, High_2], [Color_2, Style_1, Size_1, High_1], [Color_2, Style_1, Size_1, High_2], [Color_2, Style_1, Size_2, High_1], [Color_2, Style_1, Size_2, High_2], [Color_2, Style_2, Size_1, High_1], [Color_2, Style_2, Size_1, High_2], [Color_2, Style_2, Size_2, High_1], [Color_2, Style_2, Size_2, High_2]]]
http://www.sadfv.cn/news/323084/

相关文章:

  • 自己网站打不开网站架构师的工作内容
  • 网站搭建平台多少钱怎样推广小程序
  • 网站建设软件app课程网站如何建设方案
  • 宁夏手机网站建设文化厅网站建设审核报告单
  • 盐城网站优化推广服务百色建设网站
  • 个人商城网站源码厦门seo公司到1火星
  • 网站后台 添加用户网站建设新闻如何更新
  • 建筑网站在哪里找河南小学网站建设
  • 哈尔滨建站模板搭建网页设计程序代码
  • 网站建设与运营总结温州seo教程
  • 菏泽住房和城乡建设部网站建设工程业绩补录 网站
  • 花都区营销型网站建设齐齐哈尔市建设工程监察网站
  • 网页制作网站平台网站免费优化工具
  • 海东企业网站建设小程序启动失败 错误码
  • 沐川移动网站建设wordpress文件夹分类名称
  • 720全景网站怎么做某商贸网站建设方案
  • 俄罗斯门户网站有哪些上海影视传媒公司排名
  • asp的网站空间宜阳建站
  • 百度地图手机网站开发深圳工程建设交易中心网
  • 网站开发要什么软件有哪些职业生涯规划大赛项目名称
  • 按月网站建设wordpress简洁企业主题
  • 做网站头文件网站建设安全要求
  • 网站开发的经费预算阿里 wordpress
  • 凡科建站官网页更换视频滨海做网站
  • 下载网址大全浏览器泉州seo报价
  • 购物网站开发可行性岚县网站建设
  • 关于网站建设的外文翻译网站404怎么解决
  • 网站模块如何添加东莞建网站哪家强
  • 为什么网站建设还要续费兰州网站的优化
  • 网站建设收费详情百度手机模板网站