有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java合并两个ArrayList

写一个方法

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

好的,这是我目前的代码

我所需要做的就是合并用户以与here相同的方式给出的两个输入

我之前问过同样的问题,但那是针对数组的,我得到了满意的结果

我尝试了这个链接的解决方案,但没有结果 如果有人能给我快速提示如何合并两个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) 个答案

  1. # 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() + " ");
    }