在以下情况下,我做了很多工作,但无法获得所需的输出。
我被困在以下情况中:
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/