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}。如何修复它?如果Iint[] 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++;
}