java - arrayList 的 equals 从未被调用过

标签 java arraylist contains

我有 Client 类,其中包含 Category 对象的 ArrayList。因此,当我想确保某种类别对象存在时(我的意思是类别名称相同),我为类别数组列表调用 .contains() 方法。

我重写了 Category 类中的 .equals() 方法,如下所示:

@Override
public boolean equals(Object object) {
    boolean isEqual = false;
    Log.d("Category", "IT WORKS");
    if (object != null && object instanceof Category) {
        isEqual = (this.name == ((Category) object).getName());
    }

    return isEqual;
}

但在控制台中我可以看到,equals 方法从未被调用。 为什么会发生这种情况?

最佳答案

我是这样测试的,

static class Category {
    public Category(String name) {
        this.name = name;
    }

    private String name;

    public String getName() {
        return name;
    }

    @Override
    public boolean equals(Object o) {
        if (o != null && o instanceof Category) {
            return this.getName().equals(((Category) o).getName());
        }
        return false;
    }
}

public static void main(String[] args) {
    List<Category> al = new ArrayList<>();
    al.add(new Category("test"));
    System.out.println(al.contains(new Category("test")));
}

输出为

true

关于java - arrayList 的 equals 从未被调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23744865/

相关文章:

java - 如何在列表中的另一个项目之后添加一个项目?

swift - 如何按数字和字母拆分字符串

Java - ArrayList 未检测到重复值

java - 在 setOnClickListener 中获取 Activity (this)

java - 如何检测丢失的 LOG4J2 配置?

java - Powermock 框架如何创建模拟对象?

java - GWT 组合框按时间顺序排列

java - 从排序列表中获取间隔的最快方法?

java - java.util.Set.contains(Object o) 的奇怪行为

java - 如何查看java程序运行的进度