这是我的代码:
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}。我该如何解决?
答案 0 :(得分:1)
使用流的答案是正确的,但我想从您的代码开始提供完整性的解决方案。
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++));
答案 1 :(得分:0)
如果body { /* this will apply to the whole body tag */
font-family: AvantGarde;
font-size: 25px;
font-family: "AvantGarde";
color: rgb(255, 255, 255);
text-transform: uppercase;
line-height: 1.792;
text-align: left;
-moz-transform: matrix( 1.65479981820633,0,0,1.66565153423699,0,0);
-webkit-transform: matrix( 1.65479981820633,0,0,1.66565153423699,0,0);
-ms-transform: matrix( 1.65479981820633,0,0,1.66565153423699,0,0);
}
@font-face {
font-family: AvantGarde;
src: url(AvantGarde.woff);
}
或for
条件之一失败,则i < array1.size()
循环将退出,这意味着它不会处理(和排序)其他数组中的其余元素。
这是连接和排序两个数组的j < array2.size()
方法:
stream
答案 2 :(得分:0)
在两个列表的末尾添加整数最大值,并将and
条件更改为or
条件
List<Integer> array1 = new ArrayList<>(Arrays.asList(1, 3, 5));
List<Integer> array2 = new ArrayList<>(Arrays.asList(2, 4, 6));
List<Integer> list = new ArrayList<>();
array1.add(Integer.MAX_VALUE); //Add Integer Max Value
array2.add(Integer.MAX_VALUE); //Add Integer Max Value
for (int i = 0, j = 0; i < array1.size() - 1 || j < array2.size() - 1; ) {
if (array1.get(i) < array2.get(j)) {
list.add(array1.get(i));
i++;
} else {
list.add(array2.get(j));
j++;
}
}
System.out.println(list);
array1.remove(array1.size() - 1); //Remove Integer Max Value
array2.remove(array2.size() - 1); //Remove Integer Max Value
答案 3 :(得分:0)
在你的代码上面你的使用条件i&lt; array1.size()&amp;&amp; j&lt; array2.size()所以如果一个列表首先耗尽,那么它将退出循环并且不会处理第二个列表中的剩余元素。因此,如果计数器未到达结束,则需要处理该列表。< / p>
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++;
}