我已经创建了一个Java类,我在其中模拟一个Polynome(它包含一个ArrayList<Pairs>
,每对都有自己的系数和指数)。但现在我喜欢将两个Polynome与equals()
方法(带Object
)进行比较。
我知道我不能说这= =因为这只会比较Polynome引用。那么现在我想知道是否有比较两个Polynome值的简单方法,或者我只需要检查第一个Polynome的第一对与第二个Polynome的第一对等等?
答案 0 :(得分:1)
您必须覆盖等于并检查Monomial
集合中的每个Polynomial
。
提示:我有两个类 - Monomial
,有自己的等号和hashCode,还有一个单独的Polynomial
,它有Set
个Monomials
和它自己的equals和hashCode。
答案 1 :(得分:1)
当且仅当系数和指数都相等时,您必须覆盖equals()
类的Pair
方法才能返回true。
如果您覆盖hashCode()
,也应该覆盖equals()
方法。虽然严格来说,当您使用ArrayList
时,这不是强制性的,但最好始终一起覆盖equals()
和hashCode()
。
另请注意,因为您正在使用List
,其中元素的顺序很重要,x 3 + 2x-1将不等于2x- 1 + x 3 ,这可能不是你想看到的。您应该将Pair
个对象存储在Set
中,因为他们equals()
并不依赖于您向其添加元素的顺序。