Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将两个排序的arraylist合并为一个排序的arraylist_Java_Sorting_Arraylist - Fatal编程技术网

Java 将两个排序的arraylist合并为一个排序的arraylist

Java 将两个排序的arraylist合并为一个排序的arraylist,java,sorting,arraylist,Java,Sorting,Arraylist,这是我的密码: for (int i = 0, j = 0; i < array1.size() && j < array2.size();) { if (array1.get(i) < array2.get(j)) { list.add(array1.get(i)); i++; } else { list.add(array2.get(j)); j++; } } 问题是

这是我的密码:

 for (int i = 0, j = 0; i < array1.size() && j < array2.size();) {
    if (array1.get(i) < array2.get(j)) {
        list.add(array1.get(i));
        i++;
    } else {
        list.add(array2.get(j));
        j++;
    }
}
问题是我找不到最大的数字。例如,如果我有两个数组{1,3,5}和{2,4,6},那么代码会给出{1,2,3,4,5}。如何修复它?

如果I 下面是连接和排序两个数组的流方法:

int[] a1 = new int[]{1,3,5};
int[] a2 = new int[]{2,4,6};
List<Integer> result = IntStream.concat(Arrays.stream(a1), Arrays.stream(a2))
    .boxed()
    .sorted()
    .collect(Collectors.toList());

System.out.println(result);

使用stream的答案是正确的,但是为了完整性,我想从您的代码开始提供解决方案

int i, j;
for (i = 0, j = 0; i < array1.size() && j < array2.size();) {
    if (array1.get(i) < array2.get(j)) {
        list.add(array1.get(i));
        i++;
    } else {
        list.add(array2.get(j));
        j++;
    }
}

while(i < array1.size()) list.add(array1.get(i++));
while(j < array2.size()) list.add(array2.get(j++));
在两个列表的末尾添加整数最大值,并将and条件更改为or条件


在上面的代码中,使用条件i
 int i = 0;
            int j = 0;
            while (i < array1.size() && j < array2.size()) {
                if (array1.get(i) < array2.get(j)) {
                    list.add(array1.get(i));
                    i++;
                } else {
                    list.add(array2.get(j));
                    j++;
                }
            }
            while (i < array1.size()) {
                list.add(array1.get(i));
                i++;
            }
            while (j < array2.size()) {
                list.add(array2.get(j));
                j++;
            }

您的代码几乎是正确的,只要想想当您使用其中一个数组的所有元素时会发生什么。i int i = 0; int j = 0; while (i < array1.size() && j < array2.size()) { if (array1.get(i) < array2.get(j)) { list.add(array1.get(i)); i++; } else { list.add(array2.get(j)); j++; } } while (i < array1.size()) { list.add(array1.get(i)); i++; } while (j < array2.size()) { list.add(array2.get(j)); j++; }