我想断言,相同类型的两个对象列表通过该对象的属性值相同。例如,我有两个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,但这是对于大型列表而言效率很低。
是否有更好的方法可以做到这一点?还是至少直接比较两个列表,而不是遍历?
您正在使用哪个库? Harmcrest? FestAssert?断言J?根据库的不同,您可以使用某些方法对对象和列表进行深度比较。
您可以从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
。