【发布时间】:2013-04-18 21:04:21
【问题描述】:
假设我有 3 个列表,每个列表包含 3 个元素。
List1: "cat, sat, mat"; List2: "every, boy, deserves; List3: all, lines, here 。我的输出应该是:
Listout: cat,every,all; cat,every,lines; cat,every,here; cat,boy,all; cat,boy,lines;..
我可以编写一个方法,该方法可以附加 first 的所有元素,同时有一个循环贯穿其他两个列表。但是如何解决超过 3 个列表的问题。像 10 个列表。输出将包含 3 到 10 个元素。你能告诉我Java中的代码/方法是什么样的吗?我知道我可能需要递归:但是该递归方法的输入是什么?
我已经尝试过这样的一个并且它有效:
public static LinkedList<String> getPermutations(LinkedList<String> list1, LinkedList<String> list2, LinkedList<String> list3){
LinkedList<String> final_list = new LinkedList<String>();
Iterator<String> it = list1.iterator();
while (it.hasNext()) {
String this_element1 = it.next();
//System.out.println("elem1: "+this_element1);
Iterator<String> it2 = list2.iterator();
while (it2.hasNext()) {
String this_element2 = it2.next();
//System.out.println("elem2: "+this_element2);
Iterator<String> it3 = list3.iterator();
while (it3.hasNext()) {
String this_element3 = it3.next();
//System.out.println(this_element3);
final_list.add(this_element1+","+this_element2+","+this_element3);
}//3
}//2
}//1
return final_list;
}
【问题讨论】:
-
输入
LinkedList<LinkedList<String>> list1并执行for(LinkedList<String> list2 :list1){。在其中,执行以下操作:for(String s: list2){和returnString += s。你应该能够弄清楚其余的。 -
@gangqinlaohu:能不能详细点?