一对多类型arraylist

一对多类型arraylist

在以下情况下,我做了很多工作,但无法获得所需的输出。

我被困在以下情况中:

Arraylist1 = {10,20,30};
Arraylist2 = {4,5,7}


我希望输出为:

Combined: [10, 4, 10, 5, 10, 7, 20, 4, 20 ,5, 20, 7, 30, 4, 30, 5, 30, 7]


我所管理的全部是:

 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;
 }


但是我得到的输出是

Combined: [10, 4, 20, 5, 30, 7]


我希望输出像

Combined: [10, 4, 10, 5, 10, 7, 20, 4, 20 ,5, 20, 7, 30, 4, 30, 5, 30, 7]

最佳答案

我认为您的循环出错。

本质上是您需要做的。


对于第一个列表循环中的每个元素。
对于第二个列表中的每个元素,添加第一个元素,然后添加第二个元素。




for(Integer intval1 : list1)
{
   for(Integer intval2: list2)
   {
      result.add(intval1);
      result.add(intval2);
   }
}

关于java - 一对多类型arraylist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18595042/

10-11 12:43