【发布时间】:2011-12-03 14:57:29
【问题描述】:
我有一个List<String> 中的List,这是我从外部 API 方法调用中获得的:
List<List<String>> outerList
我必须按照它们在外部列表中的相同顺序连接每个列表中的字符串来创建唯一的组合键。
示例:如果外部列表有 2 个内部列表,例如 list1:{"A","B"} 和 list2:{"C","D"}。那么可能的唯一组合将是 AC、AD、BC 和 BD。
但问题是outerList 的大小是动态的,它可以包含任意数量的内部列表。如果内部列表编号是固定的,那么我可以编写 for 循环并创建组合。
我正在考虑使用反射、递归等的方向,但到目前为止还没有解决它。
public static void main(String[] args) {
List<List<String>> outerList = new ArrayList<List<String>>();
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
List<String> list2 = new ArrayList<String>();
list2.add("C");
list2.add("D");
outerList.add(list1);
outerList.add(list2);
for(String s1: list1) {
for(String s2: list2) {
System.out.println(s1+s2);
}
}
}
这里 outerList 有 2 个内部列表,所以我创建了 2 个 for 循环来显式地迭代和连接。但是实时的outerList可以有任意数量的inner list,如何动态循环遍历所有inner loop并拼接?
【问题讨论】:
-
无需反思。只需使用 for 循环。
-
也许发布你到目前为止的代码?将帮助人们准确了解您要做什么。
-
是作业吗?如果是,将其标记为作业。三个列表会发生什么?你必须为每个列表选择一个元素吗? {A,B}{C,D}{E,F} 组合都是 3 个字符长还是也可以是 1 个字符、2 个字符等等?它们是无序的吗? AC = CA?
-
@Daniel Earwicker 我已经用示例代码更新了问题陈述。
-
@stivlo 这不是家庭作业。我当前的客户项目需要该逻辑。是的,每个列表中的一个元素按 3 个列表组合的列表顺序将是 ACE、ACF、ADE、ADF、BCE、BDF、BDE、BDF
标签: java list loops recursion for-loop