比较java中的两个列表并返回差异

比较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

您好,我正在使用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的所得税不同

为了比较这些列表,我尝试了下面的代码

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)
。对于不同的数据集,它将无法正常工作。