日期:2014-05-19  浏览次数:21141 次

被这个数组搞晕了
两个数组:
String[] colrst={"NAME","YEAR","MONTH"};
String[][] result={{"name1","name2","name3"},{"2011Y","2012Y"},{"1M","2M","3M"}};

要得到:
NAME=name1 and YEAR=2011Y and MONTH=1M
NAME=name1 and YEAR=2011Y and MONTH=2M
NAME=name1 and YEAR=2011Y and MONTH=3M
NAME=name1 and YEAR=2012Y and MONTH=1M
NAME=name1 and YEAR=2012Y and MONTH=2M
NAME=name1 and YEAR=2012Y and MONTH=3M

NAME=name2 and YEAR=2011Y and MONTH=1M
NAME=name2 and YEAR=2011Y and MONTH=2M
NAME=name2 and YEAR=2011Y and MONTH=3M
NAME=name2 and YEAR=2012Y and MONTH=1M
NAME=name2 and YEAR=2012Y and MONTH=2M
NAME=name2 and YEAR=2012Y and MONTH=3M

NAME=name3 and YEAR=2011Y and MONTH=1M
NAME=name3 and YEAR=2011Y and MONTH=2M
NAME=name3 and YEAR=2011Y and MONTH=3M
NAME=name3 and YEAR=2012Y and MONTH=1M
NAME=name3 and YEAR=2012Y and MONTH=2M
NAME=name3 and YEAR=2012Y and MONTH=3M

请达人指点!
------最佳解决方案--------------------
public static void main(String[] args) {
// aa(123);
String[] colrst={"NAME","YEAR","MONTH"};
String[][] result={{"name1","name2","name3"},{"2011Y","2012Y"},{"1M","2M","3M"}};
print(colrst, result);
}

public static void print(String[] arr1, String[][] arr2) {
int len = arr1.length;
List<String> list = new ArrayList<String>();
for(int i=0; i<len; i++) {
String[] arr = arr2[i];
list = orgString(list, arr, i, arr1[i]);
}


System.out.println(list.size());
for(String l : list) {
System.out.println(l);
}
}


private static List<String> orgString(List<String> list, String[] arr, int i, String key) {
if(i == 0) {
for(String a : arr) {
list.add(key+"="+a+" ");
}
}else {
List<String> temp = new ArrayList<String>();
for(int ii=0; ii<list.size(); ii++) {
temp.add(list.get(ii));
}

list = new ArrayList<String>();
for(String next : temp) {
for(String a : arr) {
list.add(next + key+"="+a+" ");
}
}
}
return list;
}
------其他解决方案--------------------


String[] colrst={"NAME","YEAR","MONTH"};
String[][] result={{"name1","name2","name3"},{"2011Y","2012Y"},{"1M","2M","3M"}};

String[] one=result[0];
String[] two=result[1];
String[] three=result[2];
for(int i=0;i<one.length;i++){
for(int j=0;j<two.length;j++){
for(int k=0;k<three.length;k++){
System.out.println(colrst[0]+"="+one[i]+" and "+colrst[1]+"="+two[j]+" and "+colrst[2]+"="+three[k]);
}
}
}

------其他解决方案--------------------
lz,这是程序,请接收:

public