写一个方法
public static ArrayList merge(ArrayList a, ArrayList b)
合并两个数组列表,交替使用两个数组列表中的元素。如果一个数组列表比另一个更短,则只要可以替换,然后从较长的数组列表中追加剩余的elemts。例如,如果a是
1 4 9 16
和b是
9 7 4 9 11
然后merge返回数组列表
1 9 4 7 9 4 16 9 11
好的,这是我的代码到目前为止。
我需要做的就是合并用户以here
的方式给出的两个输入我之前问过同样的问题,但那是针对Array而且我得到了满意的结果。
我尝试了该链接的解决方案,但我没有结果 如果有人可以请我快速提示如何合并两个ArrayList,我将非常感谢您的帮助。
import java.util.ArrayList;
import java.util.Scanner;
public class HomeWork6_27_B{
public static void main(String arg[]) {
Scanner scan = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
ArrayList<Integer> a = new ArrayList<>();
ArrayList<Integer> b = new ArrayList<>();
System.out.print("Enter Array of numbers in First Set, type 0 when finished:");
System.out.println();
int in = scan.nextInt();
a.add(in);
in = scan.nextInt();
while (in !=0){
a.add(in);
in = scan.nextInt();
}
System.out.println("End of First Set");
System.out.print("Enter Array of numbers in Second Set, type 0 when finished:");
System.out.println();
int in2 = scan2.nextInt();
b.add(in2);
in2 = scan2.nextInt();
while (in2 !=0){
b.add(in2);
in2 = scan2.nextInt();
}
System.out.println("End of Second Set");
}
}
答案 0 :(得分:1)
我还没有使用java一段时间,但我很确定这应该有用。基本上我们循环到较长列表的末尾,如果我们还没到达输入列表的末尾,则从每个输入列表中添加一个元素。
ArrayList<Integer> merged = new ArrayList<Integer>();
// Merge the lists
for (int i = 0; i < Math.max(a.size(), b.size()); i++) {
if (i < a.size()) merged.add(a.get(i));
if (i < b.size()) merged.add(b.get(i));
}
for (int i = 0; i < merged.size(); i++) {
System.out.print(merged.get(i).toString() + " ");
}