如何在java中比较两个不同的列表对象?

如何在java中比较两个不同的列表对象?,java,Java,我有两个类列表,如ListA1和Listb1,两个列表都包含一个公共字段。所以通过使用这个字段,我必须比较这两个列表?有人能帮我吗?确保这些课程列表不同。结帐: 如果两个列表包含相同顺序的相同元素,则它们被定义为相等 这里可以使用equals方法,当然会忽略您声明的两个列表的泛型类型。AbstractList的equals方法(ArrayList和其他一些list类实现)将迭代两个列表并按顺序调用每个元素上的equals,一旦完成,它将确保两个列表中都没有剩余的项 考虑到所有这些,您将能够调用e

我有两个类列表,如
List
A1和
List
b1,两个列表都包含一个公共字段。所以通过使用这个字段,我必须比较这两个列表?有人能帮我吗?确保这些课程列表不同。

结帐:

如果两个列表包含相同顺序的相同元素,则它们被定义为相等

这里可以使用equals方法,当然会忽略您声明的两个列表的泛型类型。
AbstractList
的equals方法(ArrayList和其他一些list类实现)将迭代两个列表并按顺序调用每个元素上的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");
}
List A1=new ArrayList();
列表b1=新的ArrayList();
//getElement返回可以强制转换为Aclass和Bclass的私有字段
A1.添加(getElement());
b1.添加(getElement());
如果(A1等于(b1)){
System.out.println(“两个列表相等”);
}
签出:

如果两个列表包含相同顺序的相同元素,则它们被定义为相等

这里可以使用equals方法,当然会忽略您声明的两个列表的泛型类型。
AbstractList
的equals方法(ArrayList和其他一些list类实现)将迭代两个列表并按顺序调用每个元素上的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");
}
List A1=new ArrayList();
列表b1=新的ArrayList();
//getElement返回可以强制转换为Aclass和Bclass的私有字段
A1.添加(getElement());
b1.添加(getElement());
如果(A1等于(b1)){
System.out.println(“两个列表相等”);
}

我不确定我是否完全理解这个问题,但你是在问这样的问题吗

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;
}
公共布尔比较(列表A、列表B){
if(listA.size()!=listB.size()返回false;

对于(int i=0;i我不确定我是否完全理解这个问题,但你是在问这样的问题吗

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;
}
公共布尔比较(列表A、列表B){
if(listA.size()!=listB.size()返回false;


对于(int i=0;i你说一个字段不同是什么意思?它是一个对象的列表,例如
Person
,其中
name
等属性不同吗?提问时请尽量弄清楚。什么是“比较”?你想对列表排序还是什么?请不要在帖子中使用签名,这已经是她的了e、 下面的帖子。谢谢。@adarshr字段不同意味着两个列表都是不同的类型。你说一个字段不同是什么意思?它是一个对象的列表,例如
Person
,其中一个属性,例如
name
,是不同的吗?请在提问时尽量弄清楚。你说的“比较”是什么意思?你想对列表进行排序吗列表还是什么?还有,请不要在帖子中使用签名,它已经在这里了,在帖子下面。谢谢。@adarshr字段不同意味着两个列表都不同types@Yasir是的,我不知道现在发生了什么,我的键盘不公平。那就学点触摸打字吧,避免很多打字错误;-)@Yasir是的,我不知道现在发生了什么,我的键盘不公平。那就学点触摸打字,避免很多打字错误;-)谢谢阿莱亚当,我想我很快就能解决问题了!!!你明白我的问题了correctly@vinod:如果您认为这是解决方案,请单击帖子旁边的复选标记将其标记为。我编辑了几个打字错误。请记住,这样一个简短而简单的方法只有在列表已排序的情况下才有效。如果类字段将是公共的,则您可以您应该确保它们不为null。更好的选择是创建一个公共方法
compareField()
在AClass和bclass中,我想我已经接近解决方案了!!!你明白我的问题了correctly@vinod:如果您认为这是解决方案,请单击帖子旁边的复选标记将其标记为。我编辑了几个打字错误。请记住,只有在列表已排序的情况下,这种简短而简单的方法才会起作用。如果类字段已被删除,则如果要设置为public,则应确保它们不为null。更好的选择是在AClass和BClass中创建一个public方法
compareField()