日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

集合与集合取笛卡尔积

發(fā)布時(shí)間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 集合与集合取笛卡尔积 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
public static void run(List<List<String>> dimvalue, List<String> result, int layer, String curstring) {//大于一個(gè)集合時(shí):if (layer < dimvalue.size() - 1) {//大于一個(gè)集合時(shí),第一個(gè)集合為空if (dimvalue.get(layer).size() == 0)run(dimvalue, result, layer + 1, curstring);else {for (int i = 0; i < dimvalue.get(layer).size(); i++) {StringBuilder s1 = new StringBuilder();s1.append(curstring);s1.append(dimvalue.get(layer).get(i));run(dimvalue, result, layer + 1, s1.toString());}}}//只有一個(gè)集合時(shí):else if (layer == dimvalue.size() - 1) {//只有一個(gè)集合,且集合中沒有元素if (dimvalue.get(layer).size() == 0)result.add(curstring);//只有一個(gè)集合,且集合中有元素時(shí):其笛卡爾積就是這個(gè)集合元素本身else {for (int i = 0; i < dimvalue.get(layer).size(); i++) {result.add(curstring + dimvalue.get(layer).get(i));}}} }/*** @param args*/ public static void main(String[] args) {List<List<String>> dimvalue = new ArrayList<>();List<String> v1 = new ArrayList<>();v1.add("a");v1.add("b");List<String> v2 = new ArrayList<>();v2.add("c");v2.add("d");v2.add("e");List<String> v3 = new ArrayList<>();v3.add("f");v3.add("g");dimvalue.add(v1);dimvalue.add(v2);dimvalue.add(v3);List<String> result = new ArrayList<>();BaseReqForm.run(dimvalue, result, 0, "");int i = 1;for (String s : result) {System.out.println(i++ + ":" + s);} }

摘自:http://blog.chinaunix.net/uid-21125022-id-4392818.html

以下兩種是實(shí)際場景因需求改造練手略加改變,正好加深我的印象

1、組合后返回原格式

private static void tst(List<List<String>> dimvalue, List<List<String>> result, int layer, List<String> curstring) {//大于一個(gè)集合時(shí):if (layer < dimvalue.size() - 1) {//大于一個(gè)集合時(shí),第一個(gè)集合為空if (dimvalue.get(layer).size() == 0)tst(dimvalue, result, layer + 1, curstring);else {for (int i = 0; i < dimvalue.get(layer).size(); i++) {List<String> s1 = new ArrayList<>();if (CollectionUtils.isNotEmpty(curstring))s1.addAll(curstring);s1.add(dimvalue.get(layer).get(i));tst(dimvalue, result, layer + 1, s1);}}}//只有一個(gè)集合時(shí):else if (layer == dimvalue.size() - 1) {//只有一個(gè)集合,且集合中沒有元素if (dimvalue.get(layer).size() == 0)result.add(curstring);else {//只有一個(gè)集合,且集合中有元素時(shí):其笛卡爾積就是這個(gè)集合元素本身for (int i = 0; i < dimvalue.get(layer).size(); i++) {List<String> list = new ArrayList<>(curstring);list.add(dimvalue.get(layer).get(i));result.add(list);}}}}

?

2、逗號隔開方式

private void cartesianItemCode(List<List<String>> dimvalue, List<String> result, int layer, String curstring) {//大于一個(gè)集合時(shí):if (layer < dimvalue.size() - 1) {//大于一個(gè)集合時(shí),第一個(gè)集合為空if (dimvalue.get(layer).size() == 0)cartesianItemCode(dimvalue, result, layer + 1, curstring);else {for (int i = 0; i < dimvalue.get(layer).size(); i++) {StringBuilder s1 = new StringBuilder();s1.append(curstring);if (StringUtils.isNotBlank(curstring)) s1.append(",");s1.append(dimvalue.get(layer).get(i));cartesianItemCode(dimvalue, result, layer + 1, s1.toString());}}}//只有一個(gè)集合時(shí):else if (layer == dimvalue.size() - 1) {//只有一個(gè)集合,且集合中沒有元素if (dimvalue.get(layer).size() == 0)result.add(curstring);//只有一個(gè)集合,且集合中有元素時(shí):其笛卡爾積就是這個(gè)集合元素本身else {for (int i = 0; i < dimvalue.get(layer).size(); i++) {result.add(curstring + "," + dimvalue.get(layer).get(i));}}}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/liuye007/p/10667660.html

總結(jié)

以上是生活随笔為你收集整理的集合与集合取笛卡尔积的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。