在Java的两个列表组合 [英] combination of two lists in java
本文介绍了在Java的两个列表组合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有什么算法来实现输出这个组合? 输入:
ARR1 = {X,Y,Z}
ARR2 = {A,B}
输出:
XA,雅,ZA
XA,雅,ZB
XA,YB,ZA
XA,YB,ZB
XB,雅,ZA
XB,雅,ZB
XB,YB,ZA
XB,YB,ZB
解决方案
静态的char [] ARR1 = {'X','Y','Z'};
静态的char [] ARR2 = {'A','B'};
公共静态无效的主要(字串[] args){
打印(新的char [arr1.length - 1],0);
}
静态无效打印(的char []店,诠释深度){
对于(字符C:ARR2){
如果(深度LT; store.length){
店[深度] = C;
打印(存储,深度+ 1);
} 其他 {
的for(int i = 0; I< store.length;我++){
System.out.print(ARR1 [I] ++商店[I] +,);
}
的System.out.println(ARR1 [深度] ++ C);
}
}
}
编辑:忍不住尝试@ DenisKulagin的方法,所以这里有云:
公共静态无效的主要(字串[] args){
的char [] ARR1 = {'X','Y','Z'};
的char [] ARR2 = {'A','B'};
对(INT I = 0; I&。1所述;&所述; arr1.length;我++){
对于(INT J = 0; J< arr1.length; J ++){
INT倒= arr1.length - 1 - J;
INT指数=(ⅰ及(1&其中;&其中;倒))>>>倒;
System.out.print(ARR1 [J] +,+ ARR2 [指数] +,);
}
的System.out.println();
}
}
没有这么灵活,我的版本,因为 ARR2
只能包含两个元素,但绝对是一个聪明的做法。
Is there any algorithm to achieve this combination of output? Input :
arr1 = {x, y, z}
arr2 = {a, b}
Output :
xa, ya, za
xa, ya, zb
xa, yb, za
xa, yb, zb
xb, ya, za
xb, ya, zb
xb, yb, za
xb, yb, zb
解决方案
static char[] arr1 = {'x', 'y', 'z'};
static char[] arr2 = {'a', 'b'};
public static void main(String[] args) {
print(new char[arr1.length - 1], 0);
}
static void print(char[] store, int depth) {
for(char c : arr2) {
if(depth < store.length) {
store[depth] = c;
print(store, depth + 1);
} else {
for(int i = 0; i < store.length; i++) {
System.out.print(arr1[i] + "" + store[i] + ", ");
}
System.out.println(arr1[depth] + "" + c);
}
}
}
EDIT: Couldn't resist trying out @DenisKulagin's method, so here goes:
public static void main(String[] args) {
char[] arr1 = {'x', 'y', 'z'};
char[] arr2 = {'a', 'b'};
for(int i = 0; i < 1 << arr1.length; i++) {
for(int j = 0; j < arr1.length; j++) {
int inverted = arr1.length - 1 - j;
int index = (i & (1 << inverted)) >>> inverted;
System.out.print(arr1[j] + "" + arr2[index] + " ");
}
System.out.println();
}
}
Not quite as flexible as my version, since arr2
can only contain 2 elements, but definitely a clever approach.
这篇关于在Java的两个列表组合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文