合并两个ArrayList

时间:2015-02-26 02:54:45

标签: java arraylist

写一个方法

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");
}

}

1 个答案:

答案 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() + " ");
}