java编写了一个合并两个数组列表的方法,交替使用两个数组列表中的元素
写一个方法
public static ArrayList merge(ArrayList a, ArrayList b)
合并两个数组列表,交替使用两个数组列表中的元素。如果一个数组列表比另一个数组列表短,则尽可能长地替换,然后从较长的数组列表中附加其余元素。例如,如果
1 4 9 16
b是
9 7 4 9 11
然后merge返回数组列表
1 9 4 7 9 4 16 9 11
我尝试使用if语句编写for循环,这样当I为偶数(I%2==0)时,从数组列表a向合并数组列表添加一个数字,当I为奇数时,从数组列表b向合并数组列表添加一个数字。但是,我不知道如何处理一个数组列表可能比另一个数组列表长的事实。谁能帮我一下吗
编辑:好的,下面是代码(但远远不正确):
public static ArrayList<Integer> merge(ArrayList<Integer> een, ArrayList<Integer> twee)
{
ArrayList<Integer> merged = new ArrayList<Integer>();
for(int i = 0; i<100; i++)
{
if(i%2!=0)
{
merged.add(a.get(i));
}
if(i%2 == 0)
{
merged.add(b.get(i));
}
}
System.out.println(merged);
return merged;
}
# 1 楼答案
迭代器似乎最容易做到这一点
没有迭代器:
注意,我稍微放宽了方法签名。如果使用迭代器实现合并,
Collection
(甚至Iterable
)就可以了。否则,List
就可以了。没有必要要求ArrayList
作为方法参数类型# 2 楼答案
这是我的解决方案
# 3 楼答案
没有迭代器:
# 4 楼答案
我遇到了同样的情况,下面是我的解决方案:
# 5 楼答案
您不需要检查模,否则将从每个输入列表中跳过每一秒的元素
此泛型版本适用于所有类型的列表和泛型类型
# 6 楼答案
试试这个:我使用数组实现
输出: