X嵌套for循环

时间:2013-11-17 02:20:23

标签: java

所以,在我的程序中,我有List<List<String>>个字符串。

例如:

List1: "Hi","Hello"

List2: "Fred","Bob"

List3: "how are you?","are you having a good day?","good weather, huh?"

可以是List<List<String>>

如何生成List<String>所有可能的句子?

在这个例子中,所有句子都是:

Hi Fred how are you?
Hi Fred are you having a good day?
Hi Fred good weather, huh?
Hi Bob how are you?
Hi Bob are you having a good day?
Hi Bob good weather, huh?
Hello Fred how are you?
Hello Fred are you having a good day?
Hello Fred good weather, huh?
Hello Bob how are you?
Hello Bob are you having a good day?
Hello Bob good weather, huh?

2 个答案:

答案 0 :(得分:1)

您可以将所有列表放入totalList,其类型为List&lt;列表&lt;字符串&gt; &GT; 。一次合并2个列表以填充所有组合案例。

以下是供您参考的例子,它会根据您的需要打印信息。

注意:它支持List&lt;的动态数量列表&lt;字符串&gt; &GT;和List的动态大小&lt;字符串&gt;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {

public static void main(String[] args) {

List<String> listOne = Arrays.asList("Hi","Hello");
List<String> listTwo = Arrays.asList("Fred","Bob");
 List<String> listThree = Arrays.asList("how are you?","are you having a good day?","good weather, huh?");
List<List<String>> totalList = Arrays.asList(listOne,listTwo,listThree);

new Test().printAllCases(totalList);
}

public void printAllCases(List<List<String>> totalList)
{
List<String> result = new ArrayList<String>(totalList.get(0));

for(int index = 1; index < totalList.size() ; index++)
{
    result = combineTwoLists(result, totalList.get(index));
}

/* print */
int count = 0;
for(String s: result)
{
    System.out.printf("%d. %s\n", ++count, s);
}
}

private List<String> combineTwoLists(List<String> list1, List<String> list2)
{
List<String> result = new ArrayList<String>();
StringBuilder sb = new StringBuilder();
for(String s1 : list1)
{
    for(String s2: list2)
    {
        sb.setLength(0);
        sb.append(s1).append(' ').append(s2);
        result.add(sb.toString());
    }
}
return result;
}
}

在您的示例中,Console中所有可用的案例打印如下:

1. Hi Fred how are you?
2. Hi Fred are you having a good day?
3. Hi Fred good weather, huh?
4. Hi Bob how are you?
5. Hi Bob are you having a good day?
6. Hi Bob good weather, huh?
7. Hello Fred how are you?
8. Hello Fred are you having a good day?
9. Hello Fred good weather, huh?
10. Hello Bob how are you?
11. Hello Bob are you having a good day?
12. Hello Bob good weather, huh?

答案 1 :(得分:1)

这是何时使用递归的一个很好的例子!如果您不熟悉,这里有一些有用的递归链接。

What is recursion

more recursion