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 输出 AM 得到 : 2 1 0 0
你在List
上加了两个0
,然后在List
的开头加上了两个数字,除了0
s。
删除以下语句:
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);
当你这样做时
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);
如果删除:
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;
}
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());
}