如何通过属性值比较两个Java对象列表

问题描述 投票:0回答:2

我想断言,相同类型的两个对象列表通过该对象的属性值相同。例如,我有两个Person对象列表,它们具有first,last和middlename属性。每个Person对象的每个属性(java bean)都有方法设置器和获取器,构造函数不包含任何参数。

我们在这里假设我已经有两个人的列表,称为现存人物列表,它具有以下属性:现有人员1:firstName = Bob,lastName = Smith现有的person2:firstName = Sue,middleName = K,lastName = White

我想比较对象,所以我采取的方法是创建新的对象以进行比较:

Person person1 = new Person(); 
Person person2 = new Person();
List<Person> personList = new ArrayList<>();
person1.setFirstName("Bob");
person1.setLastName("Smith");
person2.setFirstName("Sue");
person2.setMiddleName("K.");
person2.setLastName("White");
personList.add(person1);
personList.add(person2);

我当前正在做的是使用for循环遍历两个列表,并使用Hamcrest方法samePropertyValue(personList.get(i).matches(existingPersonList.get(j))查找匹配项和assertTrue,但这是对于大型列表而言效率很低。

是否有更好的方法可以做到这一点?还是至少直接比较两个列表,而不是遍历?

java testing hamcrest
2个回答
0
投票

您正在使用哪个库? Harmcrest? FestAssert?断言J?根据库的不同,您可以使用某些方法对对象和列表进行深度比较。


-1
投票

您可以从equals()类中使用List方法进行比较。

请查看代码:

   private void compareLists() {
       listOne.add("QA");
       listTwo.add("QA");

       listOne.add("Testing");
       listTwo.add("Testing");

       System.out.println(listOne.equals(listTwo)); // true

}

因此它将返回输出为true

© www.soinside.com 2019 - 2024. All rights reserved.