java - 一对多类型数组列表

标签 java 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 循环。像这样的事情:

for elem1 in list1
    for elem2 in list2
        add elem1 to result
        add elem2 to result

只需将伪代码转换为增强型 for 循环或带迭代器的 while 循环即可。迭代器的缺点是您需要为每个外循环迭代重新创建 list2 迭代器。

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

相关文章:

swing - Switch 语句有问题吗?

java - 将 jsonobject 存储在 ArrayList 中

Java地址簿。如何防止代码中出现重复的联系人?

java - 如何用Java创建一个桶填充?

java - 使用java从特定端口和指定IP读取数据

java - ArrayList仅重复打印最后一个成员

java - 修复类之间的方法冲突?

java - Java 中的 ArrayList <包装类> 自动完成

使用 JDBC 将记录插入数据库时​​出现 java.sql.SQLException : ORA-00928: missing SELECT keyword.

java - 为什么我不应该在实现它们时更改接口(interface)方法名称?