gpt4 book ai didi

java - 一对多类型数组列表

转载 作者:行者123 更新时间:2023-12-01 17:21:17 27 4
gpt4 key购买 nike

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

我陷入了这样的场景:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com