比较java中的两个列表并返回差异
您好,我正在使用selenium和java。我必须比较列表并返回差异。这些值是我从数据库中获取的 清单A有身份证和所得税, 清单B有身份证和所得税 我想比较列表A ID和列表B ID,以及列表A所得税和列表B所得税。 比较之后,我想返回差值 示例:如果列表A[1,2,3]中的ID和列表A中的所得税为[10.25,1.58,30.28] 列表B[1,2,3]中的ID和列表B中的所得税为[10.25,1.57,28.28] 我想显示比较后哪些值不同,以及哪些ID不同 我想要输出,因为ID 2和ID 3的所得税不同 为了比较这些列表,我尝试了下面的代码比较java中的两个列表并返回差异,java,list,Java,List,您好,我正在使用selenium和java。我必须比较列表并返回差异。这些值是我从数据库中获取的 清单A有身份证和所得税, 清单B有身份证和所得税 我想比较列表A ID和列表B ID,以及列表A所得税和列表B所得税。 比较之后,我想返回差值 示例:如果列表A[1,2,3]中的ID和列表A中的所得税为[10.25,1.58,30.28] 列表B[1,2,3]中的ID和列表B中的所得税为[10.25,1.57,28.28] 我想显示比较后哪些值不同,以及哪些ID不同 我想要输出,因为ID 2和ID
try {
IDList.equals(AfterChangeIDList);
log.info("ID List are equal");
}catch (Exception e) {
log.warn("IDList are not equal");
throw e;
}
//比较所得税清单
try {
IncomeTaxList.equals(AfterChangeIncomeTaxList);
log.info("Income Tax list are equal");
}catch (Exception e) {
log.warn("Income Tax list are not equal");
throw e;
}
我可以知道如何返回差异吗?publicstaticvoidmain(String[]args){
public static void main(String[] args) {
List<Integer> ids = List.of(1, 2, 3);
List<Double> taxes = List.of(10.25, 1.58, 30.28);
List<Double> taxes2 = List.of(10.25, 1.57, 28.28);
for (int i = 0; i < ids.size(); i++) {
int id = i + 1;
int result = taxes.get(i).compareTo(taxes2.get(i));
if (result != 0) {
System.out.println(
"value for id:" + id
+ " is changed old value: " + taxes.get(i)
+ ",new value is: " + taxes2.get(i));
}
}
}
列表ID=List.of(1,2,3);
税单=税单(10.25,1.58,30.28);
税单2=税单(10.25,1.57,28.28);
对于(int i=0;i
请尝试以下操作:
public void test() {
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
ids.add(3);
List<Double> taxes = new ArrayList<>();
taxes.add(10.25d);
taxes.add(1.58d);
taxes.add(30.28d);
List<Double> taxes2 = new ArrayList<>();
taxes2.add(10.25d);
taxes2.add(1.57d);
taxes2.add(28.28d);
List<Integer> differentIds = new LinkedList<>();
for (int i = 0; i < ids.size(); i++) {
if (!taxes.get(i).equals(taxes2.get(i))) {
differentIds.add(ids.get(i));
}
}
System.out.println("Different values for ids: " + differentIds);
}
公共无效测试(){
列表ID=新的ArrayList();
添加(1);
添加(2);
添加(3);
列表税=新的ArrayList();
税费。加上(10.25d);
税费。加上(1.58d);
税费。加上(30.28d);
List taxes2=new ArrayList();
税款2.加上(10.25d);
税款2.加上(1.57d);
税款2.加上(28.28d);
List differentIds=newlinkedlist();
对于(int i=0;i
您是否考虑过咨询Javadoc?为什么要将这些文档保存在单独的列表中而不是地图中?映射会使比较更容易。为IDList
和AfterChangeIDList
添加源代码,因为无法看到equals
方法的实际功能。请重新措辞/格式化您的问题-假设有人以这种格式向您发送问题,您会阅读吗?@realpoint谢谢您,我会探索,但我可以获得更多信息吗?@user207421否。虽然我在谷歌上搜索了解决方案,但我没有找到针对此特定场景的解决方案。它适用于此特定数据集,但它总是与taxes2.get(0)
进行比较,而它应该是taxes2.get(i)
。对于不同的数据集,它将无法正常工作。