我有两个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。
答案 0 :(得分:6)
我知道比较是基于引用而不是值相等
不,它基于价值平等。您需要覆盖equals()
才能正确比较ClassPojo
答案 1 :(得分:2)
要使contains
或containsall
有效,您需要覆盖班级ClassPojo
中的equals()功能。
看起来像这样:
@Override
public boolean equals(Object obj){
if (obj.Name.equals(this.Name) && obj.FilterID == this.FilterID)
return true;
else
return false;
}
(用手机写的所以要小心复制粘贴)