containsAll在比较对象的两个ArrayList时返回False

时间:2017-04-10 18:49:23

标签: java arraylist

我有两个ArrayList:

ArrayOne

ClassPojo [Name ="XXX", FilterID = 4]
ClassPojo [Name = "ZZZ", FilterID = 5]

ArrayTwo

ClassPojo [Name = "XXX", FilterID = 4]

但尝试使用时:

 Arrays.asList(ArrayOne).contains(ArrayTwo )

ArrayOne().containsAll(ArrayTwo)

它返回false, 我知道比较是基于Refrences而不是Value equlaty 但我怎么能通过价值观来做到这一点 注意:我想使用conatinsAll,所以如果在ArrayOne的某些部分找到arrayTwo的内容,则返回true。

2 个答案:

答案 0 :(得分:6)

  

我知道比较是基于引用而不是值相等

不,它基于价值平等。您需要覆盖equals()才能正确比较ClassPojo

的2个对象

答案 1 :(得分:2)

要使containscontainsall有效,您需要覆盖班级ClassPojo中的equals()功能。

看起来像这样:

@Override
public boolean equals(Object obj){
    if (obj.Name.equals(this.Name) && obj.FilterID == this.FilterID)
        return true;
    else
        return false;
}

(用手机写的所以要小心复制粘贴)