我在Java中有数组列表:

List<Correction> Auv=new ArrayList<>();
List<Correction> Produv=new ArrayList<>();

然后我想用Auv减去Produv的值,这是一个例子:

Produv.add(new Correction("a","b"));
Produv.add(new Correction("a","c"));
Produv.add(new Correction("b","d"));
Produv.add(new Correction("b","c"));

Auv.add(new Correction("c","a"));
Auv.add(new Correction("b","c"));

Produv.removeall(Auv);

但是没有减去任何东西,数组仍然包含它的初始值,有什么办法吗? 我尝试覆盖equals(),仍然得到相同的结果

这里是我的改正类的代码:

    public class Correction {
    private String node0;
    private String node1;

    public Correction(String node0, String node1) {
        this.node0 = node0;
        this.node1 = node1;
    }

    public void setNode0(String node0){
        this.node0=node0;
    }
    public void setNode1(String node1){
        this.node1=node1;
    }

    public String getNode0(){
        return node0;
    }
    public String getNode1(){
        return node1;
    }

    @Override
    public boolean equals(Object object){
        boolean same = false;

        if (object != null && object instanceof Correction)
        {
            same = this.node0 == ((Correction) object).node1 && this.node1 == ((Correction) object).node1;
        }

        return same;
    }
}

解决了!! 这只是在重写equals()方法(感谢伙计们)时出现的错误,这里是我的修正:

   @Override
    public boolean equals(Object object){
        boolean same = false;

        if (object != null && object instanceof Correction)
        {
            same = (this.node0 == ((Correction) object).node1 && this.node1 == ((Correction) object).node0)||(this.node0 == ((Correction) object).node0 && this.node1 == ((Correction) object).node1);
        }

        return same;
    }

#1楼 票数:2 已采纳

您的equals方法看起来不对。 比较this.node0((Correction) object).node0更有意义。

我认为应该是:

public boolean equals(Object object){
    boolean same = false;

    if (object != null && object instanceof Correction)
    {
        same = this.node0.equals(((Correction) object).node0) && this.node1.equals(((Correction) object).node1);
    }

    return same;
}

另外,这是错字吗?

Auv.add("c","a");
Auv.add("b","c");

可能应该是:

Auv.add(new Correction ("c","a"));
Auv.add(new Correction ("b","c"));

  ask by bilih translate from so

未解决问题?本站智能推荐:

11回复

ArrayList不使用重写的equals

我有一个问题,让ArrayList正确使用overriden equals。 问题是我正在尝试使用equals来测试单个键字段,并使用ArrayList.contains()来测试是否存在具有正确字段的对象。 这是一个例子 令我担心的是,我不仅在输出上出错,而​​且我也没有得到“达到此处
2回复

覆盖Android活动中的ArrayList.equals

我有一个包含多个变量的对象的数组列表。 我生成了新对象,并希望有条件地检查数组列表中是否不存在具有相同内容的对象。 不幸的是,Arraylist.contains(object)和Arraylist.equals(object)都仅检查同一对象的引用,而不检查具有相同组件的对象。 我希
1回复

如何在JAVA中的泛型类中使用重写方法

我不想用泛型破坏多态性。 但是我的想法很短,迫使铸造。 当我不这样做时,日食将Object类视为equals方法。 任何人都有好的解决方案?? 问题出在ArraySet类的if语句中。 祝好运。 后记:我正在学习英语。 因此,感谢您的指出。
4回复

为什么在Java中使用默认的Objectequals方法更好?

为什么在Java中使用默认的Object equals方法并将其修改为更适合特定类(通过使用instanceof进行验证并使用类型转换): 而不是使用特定于需要使用equals每个类的新equals方法重载它:
2回复

[Java]indexOf使用等于吗?

我想知道如何实现ArrayList的方法indexOf。 实际上我已经覆盖了equals方法,如下所示: 我虽然这会避免我覆盖indexOf方法,但似乎我完全错了。 当我尝试 indexOf返回false但它应该返回true。 (我检查了我要找的元素存在) 我完全错了吗?
3回复

equals()方法如何在Java中工作

这个问题已经在这里有了答案: Java中==和equals()有什么区别? 23个答案 equals方法比较两个对象值是否相等。 我的问题是它如何比较两个对象? 如何判断两个对象是否相等? 我想基于它比较两个对象的知识。 我不包括hashCode方法。
4回复

hashCode()只应使用equals()中使用的不可变字段的子集吗?

情况 我需要覆盖equals() ,因为我建议我也使用相同的字段覆盖hashCode()方法。 然后,当我看着一个只包含一个对象的集合时,我得到了令人沮丧的结果 而 我现在明白了,这是因为在将object添加到set之后对object所做的更改再次更改了其hashCode。 然后
1回复

Java中的equals方法

让我们考虑以下简单的类。 问题在于方法的重写:我使用通用的Object类作为属性使其更灵活,但是netbeans在返回行上打印错误:“对象没有方法getX”是完全合乎逻辑的。 但是问题仍然存在,我该如何解决呢? 预先感谢您:)