求简化多重循环

二酉子敬 2018-12-25 12:12:57
/**
* 测试调用的方法
*/
public static void testForFunction()
{
String[] betBunches = new String[]{"2", "3", "4"};
Object[][] list = new Object[][]{};
list[0] = new String[]{"周一001|胜|1", "周一001|平|2"};
list[1] = new String[]{"周二001|胜|3", "周二001|平|4"};
list[2] = new String[]{"周三001|胜|5"};
list[3] = new String[]{"周四001|胜|6"};
getBetList(betBunches, list);
}

/**
* 说 明: 计算投注注数
*
* @param betBunches 选择的串玩法
* @param list 投注场次和投注号码
* 创 建 人: zd
* 创建时间: 2018/12/25
**/
public static List<List<Object>> getBetList(String[] betBunches, Object[][] list)
{
Combination cb = new Combination(list);
List<List<Object>> cmNew = new ArrayList<>();
for (String betBunch : betBunches)
{
Integer num = Integer.valueOf(betBunch);
List<Object[][]> cm = cb.select(num);
for (int i = 0; i < cm.size(); i++)
{
Object[][] c = cm.get(i);
switch (num)
{
case 2:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
List<Object> a2 = new ArrayList<>();
a2.add(c0);
a2.add(c1);
cmNew.add(a2);
}
}
break;
case 3:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
for (Object c2 : c[2])
{
List<Object> a2 = new ArrayList<>();
a2.add(c0);
a2.add(c1);
a2.add(c2);
cmNew.add(a2);
}
}
}
break;
case 4:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
for (Object c2 : c[2])
{
for (Object c3 : c[3])
{
List<Object> a3 = new ArrayList<>();
a3.add(c0);
a3.add(c1);
a3.add(c2);
a3.add(c3);
cmNew.add(a3);
}
}
}
}
break;
case 5:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
for (Object c2 : c[2])
{
for (Object c3 : c[3])
{
for (Object c4 : c[4])
{
List<Object> a4 = new ArrayList<>();
a4.add(c0);
a4.add(c1);
a4.add(c2);
a4.add(c3);
a4.add(c4);
cmNew.add(a4);
}
}
}
}
}
break;
case 6:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
for (Object c2 : c[2])
{
for (Object c3 : c[3])
{
for (Object c4 : c[4])
{
for (Object c5 : c[5])
{
List<Object> a5 = new ArrayList<>();
a5.add(c0);
a5.add(c1);
a5.add(c2);
a5.add(c3);
a5.add(c4);
a5.add(c5);
cmNew.add(a5);
}
}
}
}
}
}
break;
case 7:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
for (Object c2 : c[2])
{
for (Object c3 : c[3])
{
for (Object c4 : c[4])
{
for (Object c5 : c[5])
{
for (Object c6 : c[6])
{
List<Object> a6 = new ArrayList<>();
a6.add(c0);
a6.add(c1);
a6.add(c2);
a6.add(c3);
a6.add(c4);
a6.add(c5);
a6.add(c6);
cmNew.add(a6);
}
}
}
}
}
}
}
break;
case 8:
for (Object c0 : c[0])
{
for (Object c1 : c[1])
{
for (Object c2 : c[2])
{
for (Object c3 : c[3])
{
for (Object c4 : c[4])
{
for (Object c5 : c[5])
{
for (Object c6 : c[6])
{
for (Object c7 : c[7])
{
List<Object> a7 = new ArrayList<>();
a7.add(c0);
a7.add(c1);
a7.add(c2);
a7.add(c3);
a7.add(c4);
a7.add(c5);
a7.add(c6);
a7.add(c7);
cmNew.add(a7);
}
}
}
}
}
}
}
}
break;
default:
}
}
}
Log.e("getBetList()", cmNew.toString());
return cmNew;
}
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2018-12-25
  • 打赏
  • 举报
回复
没法测试,你自己测吧

public static List<List<Object>> getBetList(String[] betBunches, Object[][] list) {
Combination cb = new Combination(list);
List<List<Object>> cmNew = new ArrayList<>();
for (String betBunch : betBunches) {
Integer num = Integer.valueOf(betBunch);
List<Object[][]> cm = cb.select(num);
for (int i = 0; i < cm.size(); i++) {
Object[][] c = cm.get(i);
List<Object> objectList = new ArrayList<>();
combination(cmNew, objectList, c, 0);
}
}
return cmNew;
}

public static void combination(List<List<Object>> cmNew, List<Object> objectList, Object[][] objectss,
int index) {
int nextIndex = index + 1;
for (Object object : objectss[index]) {
List<Object> tempList = new ArrayList<>(objectList);
tempList.add(object);
if (objectss.length > nextIndex) {
combination(cmNew, tempList, objectss, nextIndex);
} else {
cmNew.add(tempList);
}
}
}
咸哼酒家 2018-12-25
  • 打赏
  • 举报
回复
case 1、2、3等,万一数字很大就很难办,
应当拿到记录条数,动态处理
咸哼酒家 2018-12-25
  • 打赏
  • 举报
回复
递归思想了解一波,
自己调用自己,结果当参数传递进去再得到结果
,最终return
二酉子敬 2018-12-25
  • 打赏
  • 举报
回复
引用 1 楼 LCL_data 的回复:
这个业务是这样的,没啥好思路可以简化。。。
are u 秀儿?
十八道胡同 2018-12-25
  • 打赏
  • 举报
回复
这个业务是这样的,没啥好思路可以简化。。。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧