List<Integer> listOne= new ArrayList<>();
listOne.add(10);
listOne.add(2);
listOne.add(3);
//Second Array
List<Integer> listTwo= new ArrayList<>();
listTwo.add(3);
listTwo.add(7);
listTwo.add(1);
我想比较两个列表,并根据哪个值更大,将点指向listOne
或listTwo
[10, 2, 3] compare to [3, 7, 1]
if listOne.get(0) > listTwo.get(0) //add one point to listOne
if listOne.get(0) < listTwo.get(0) //add one point to listTwo
这是我经过测试的代码
static List<Integer> compareList(List<Integer> a, List<Integer> b) {
ArrayList<Integer> output = new ArrayList<>();
output.add(0, 0);
output.add(1, 0);
int out = output.get(0);
int out2 = output.get(1);
for (int i = 0; i < a.size(); i++) {
if (a.get(i) > b.get(i)) {
out = out + 1;
}
if (a.get(i) < b.get(i)) {
out2 = out2 + 1;
}
}
output.add(0, out);
output.add(1, out2);
return output;
}
可以,但是不能输出预期的答案
预期输出:2 1 输出越来越:2 1 0 0
答案 0 :(得分:4)
您要在0
上添加两个List
,然后在List
的开头添加两个数字,除了0
删除以下语句:
output.add(0, 0);
output.add(1, 0);
并保持以下声明不变:
output.add(0, out);
output.add(1, out2);
或者只是更改以下语句:
output.add(0, out);
output.add(1, out2);
收件人:
output.set(0, out);
output.set(1, out2);
答案 1 :(得分:2)
这样做的时候
output.add(0, out);
output.add(1, out2);
您将项目添加到索引0和1,从而将先前输入的零推入索引2和3。output
现在为[2, 1, 0, 0]
。
删除
output.add(0, 0);
output.add(1, 0);
然后将out
和out2
的初始化更改为
int out = 0;
int out2 = 0;
现在您也不需要按索引添加结果
output.add(out);
output.add(out2);
答案 2 :(得分:1)
如果您删除:
output.add(0, 0);
output.add(1, 0);
作品:
static List<Integer> compareList(List<Integer> a, List<Integer> b) {
ArrayList<Integer> output = new ArrayList<>();
int out = 0;
int out2 = 0;
for (int i = 0; i < a.size(); i++) {
if (a.get(i) > b.get(i)) {
out = out + 1;
}
if (a.get(i) < b.get(i)) {
out2 = out2 + 1;
}
}
output.add(0, out);
output.add(1, out2);
return output;
}
答案 3 :(得分:0)
ArrayList文档说:
将指定元素插入此列表中的指定位置。 移动当前在该位置的元素(如果有)和任何 右边的后续元素(将其索引添加一个)。
因此,使用语句output.add(0, out)
和output.add(1, out2)
,您只需在列表的0和1位置添加项目,向下推列表中已有的内容(即,将值0和0移至第三个来回位置。
另一种方法是按如下方式使用HashMap:
static List<Integer> compareList(List<Integer> a, List<Integer> b) {
HashMap<Integer, Integer> output = new HashMap<>();
output.put(0, 0);
output.put(1, 0);
int out = output.get(0);
int out2 = output.get(1);
for (int i = 0; i < a.size(); i++) {
if (a.get(i) > b.get(i)) {
out = out + 1;
}
if (a.get(i) < b.get(i)) {
out2 = out2 + 1;
}
}
output.put(0, out);
output.put(1, out2);
return new ArrayList(output.values());
}