我有两个类列表,例如List<Aclass>
A1和List<Bclass>
b1,两个列表都包含一个常见的字段。那么通过使用这个字段,我必须比较这两个列表?请有人帮帮我吗?确保这些班级列表不同。
答案 0 :(得分:5)
我不确定我是否完全理解这个问题,但是你要求这样的东西?
public boolean compare (List<AClass> listA, List<BClass> listB) {
if (listA.size() != listB.size () return false;
for (int i=0; i<listA.size(); i++) {
AClass aClass == (AClass) listA.get(i);
BClass bClass == (BClass) listB.get(i);
if (aClass.commonField != bClass.commonField) return false;
}
return true;
}
两个列表都应按该commonField字段
排序答案 1 :(得分:0)
结帐the javadoc for List.equals():
如果两个列表包含相同顺序的相同元素,则它们被定义为相等。
这里可以使用equals方法,当然忽略了你声明两个列表的泛型类型。 AbstractList
的equals方法(ArrayList和一堆其他列表类实现)将迭代两个列表并按顺序调用每个元素上的equals,一旦完成,它确保没有任何项目留在列表。
鉴于这一切,您将能够调用equals方法来确定天气两个列表包含相同的元素:
List<Aclass> A1 = new ArrayList<Aclass>();
List<Bclass> b1 = new ArrayList<Bclass>();
// getElement returns a private field that can be cast to both Aclass and Bclass
A1.add(getElement());
b1.add(getElement());
if (A1.equals(b1)) {
System.out.println("two lists are equal");
}