我有两个相同类型的 arrayList,我想根据 ValueList 中的特定属性比较两者。价值清单
ValueList A contains
1,10,5,
2,20,3
3,40,5,
4,60,8
ValueList B contains
2,20,3
3,40,5
我想比较基于 line_num 的列表并创建另一个 arraylist Result,如果 line_num 存在于 ValueList A 但不在 ValueList B 中,则 Result 中的 value 字段必须具有-1。结果应该是这样的;
Result
10,-1
20,3
40,5,
60,-1
我无法编写“未找到”条件。有人可以帮我吗?
我的代码
List<Result> result= new ArrayList<Result>();
for(ValueList data1: valueListA) {
for (ValueList data2: valueListB) {
Result inter = new Result();
if(data1.getLine_num==data2.getLine_num) {
inter.setKey(data1.getKey());
inter.setValue(data1.getValue());
result.add(inter);
}
}
}
更新的代码有效:
public static List<Result> result;= new ArrayList<Result>();
....
int i1 = 0,int i2 = 0;
Result inter = new Result();
while (i1 < valueListA.size() && i2 < valueListB.size()) {
ValueList data1 = valueListA.get(i1);
ValueList data2 = valueListB.get(i2);
if (data1.getLine_num == data2.getLine_num) {
// Add the result.
result= new ArrayList<Result>();
inter.setValue(data1.getValue());
inter.setKey(data1-getKey())
result.add(inter);
i1++;
i2++;
} else if (data1.getLine_num < data2.getLine_num) {
result= new ArrayList<Result>();
// Add -1 because the data was not in valueListB.
inter.setValue(data1.getValue());
inter.setKey(-1);
result.add(inter);
i1++;
} else {
i2++;
}
}