一对多类型的arraylist

0 java arraylist

我已经为以下场景做了很多工作,但我无法获得所需的输出.

我被困在我所拥有的场景中:

Arraylist1 = {10,20,30};
Arraylist2 = {4,5,7}
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

Combined: [10, 4, 10, 5, 10, 7, 20, 4, 20 ,5, 20, 7, 30, 4, 30, 5, 30, 7]
Run Code Online (Sandbox Code Playgroud)

我做的所有人都遵循:

 ArrayList<Integer> numbers = new ArrayList<Integer>();
 numbers.add(10); numbers.add(20); numbers.add(30); numbers.add(40);


 ArrayList<Integer> numbers2 = new ArrayList<Integer>();
 numbers2.add(4); numbers2.add(5); numbers2.add(7);

 List<Integer> interleaved = interleave(numbers, numbers2);

 System.out.println("\nCombined: " + interleaved);


 public static List<Integer> interleave(final List<Integer> list1, final List<Integer> list2) {
     List<Integer> result = new ArrayList<Integer>(list2.size() + list1.size());

     Iterator<Integer> it1 = list1.iterator();
     Iterator<Integer> it2 = list2.iterator();
     while (it1.hasNext() || it2.hasNext()) {
         if (it1.hasNext()) {
             result.add(it1.next());
         }
         if (it2.hasNext()) {
             result.add(it2.next());
         }
     }
     return result;
 }
Run Code Online (Sandbox Code Playgroud)

但我得到的输出是

Combined: [10, 4, 20, 5, 30, 7]
Run Code Online (Sandbox Code Playgroud)

我希望输出像

Combined: [10, 4, 10, 5, 10, 7, 20, 4, 20 ,5, 20, 7, 30, 4, 30, 5, 30, 7]
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 5

您不应该并行迭代这两个列表.你需要一个嵌套的for循环.像这样的东西:

for elem1 in list1
    for elem2 in list2
        add elem1 to result
        add elem2 to result
Run Code Online (Sandbox Code Playgroud)

只需将伪代码转换为增强型for循环或使用迭代器转换为while循环.使用迭代器回退是需要list2为每个外部循环迭代重新创建迭代器.