在不使用任何集合,列表等的情况下,在Java中找到两个集合中的唯一和公共点

问题描述 投票:0回答:2

所以我的问题是,我需要在给定的两个集合中找到相交和差异。相交几乎完成了,但它给出了诸如“ required:int,found:oo.hide.Point”或“ required:oo.hide.Point [],found:int []”之类的错误。我不能使用任何集合,列表或其他内置/动态集合。有什么办法可以解决这两种方法吗?我将非常感谢您的帮助。

``


java arrays intersect
2个回答
0
投票

我已经在评论中告诉您,为了使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


0
投票
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)>
© www.soinside.com 2019 - 2024. All rights reserved.