猿问

有比较优雅的写法吗?

大家好,想达到如下目的,
List1 {"A1", "A2", "A3", "A4"}
List2 {"B1", "B2", "B3", "B4", "B5"}
List3 {"C1", "C2", "C3", "C4", "C5"}
List4 {"D1", "D2", "D3"}
List5 {"E1", "E2", "E3", "E4"}
List6 {"F1", "F2", "F3", "F4", "F5"}

A1,B1,C1,D1,E1,F1
A1,B1,C1,D1,E1,F2
A1,B1,C1,D1,E1,F3
...
A1,B1,C1,D1,E2,F1
A1,B1,C1,D1,E2,F2
A1,B1,C1,D1,E2,F3
...

实现这样的组合,除了6重循环外,有什么优雅的写法吗?


胡子哥哥
浏览 487回答 4
4回答

浮云间

6重循环逻辑上更简单些,不想要这种写法也是可以的,给你个参考吧;[code="java"]import java.util.Arrays;import java.util.List;public class Mm {/** &nbsp;*&nbsp;@param&nbsp;args &nbsp;*/ public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;int[]&nbsp;a&nbsp;=&nbsp;new&nbsp;int[]&nbsp;{&nbsp;123,&nbsp;11&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;List<String>[]&nbsp;t&nbsp;=&nbsp;new&nbsp;List[]&nbsp;{&nbsp;Arrays.asList("1",&nbsp;"2",&nbsp;"3",&nbsp;"4"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.asList("a",&nbsp;"b",&nbsp;"c"),&nbsp;Arrays.asList("甲",&nbsp;"乙",&nbsp;"丙",&nbsp;"丁")&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;int[]&nbsp;pos&nbsp;=&nbsp;new&nbsp;int[t.length]; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!print(t,&nbsp;pos))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addpos(t,&nbsp;pos,&nbsp;pos.length&nbsp;-&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;} } public&nbsp;static&nbsp;void&nbsp;addpos(List<String>[]&nbsp;t,&nbsp;int[]&nbsp;pos,&nbsp;int&nbsp;p_length)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(p_length&nbsp;<&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(pos[p_length]&nbsp;<&nbsp;t[p_length].size()&nbsp;-&nbsp;1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos[p_length]&nbsp;=&nbsp;pos[p_length]&nbsp;+&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos[p_length]&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addpos(t,&nbsp;pos,&nbsp;p_length&nbsp;-&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;} } public&nbsp;static&nbsp;boolean&nbsp;print(List<String>[]&nbsp;t,&nbsp;int[]&nbsp;pos)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;end&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;pos.length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(t[i].get(pos[i])); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;=&nbsp;end&nbsp;&&&nbsp;t[i].size()&nbsp;-&nbsp;1&nbsp;==&nbsp;pos[i]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;end; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答