所以我的问题是,我需要在给定的两个集合中找到相交和差异。相交几乎完成了,但它给出了诸如“ required:int,found:oo.hide.Point”或“ required:oo.hide.Point [],found:int []”之类的错误。我不能使用任何集合,列表或其他内置/动态集合。有什么办法可以解决这两种方法吗?我将非常感谢您的帮助。
``
我已经在评论中告诉您,为了使equals()
正常工作,您需要重写assertThat
方法。覆盖的方法不正确,这是应如何编写:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PointSet pointSet= (PointSet) o;
return Arrays.equals(pointArr, pointSet.pointArr);
}
PS:不要忘记也覆盖equals()
类中的Point
。
package oo.hide;
import java.util.Objects;
public class Point {
private Integer x;
private Integer y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return String.format("(%s, %s)", x, y);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Point)) {
return false;
}
Point somethingElse = (Point) obj;
// System.out.println(x.equals(somethingElse.x));
return Objects.equals(x, somethingElse.x) && Objects.equals(y, somethingElse.y);
}
}
所以这是给Point类的,尽管一切似乎都在那里工作,并且测试正在进行中。 :)更改PointSet类equals(),然后再次编写。至少现在看起来更好,只是
Expected: is <(1, 1)>
but: was <(1, 1)>
Expected :is <(1, 1)>
Actual :<(1, 1)>