首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带对象的arraylist不包含值

带对象的ArrayList不包含值的问题通常是由于对象的相等性判断不正确导致的。在Java中,ArrayList使用equals()方法来判断两个对象是否相等。如果你的对象没有重写equals()方法,那么它将使用Object类的默认实现,即比较对象的内存地址是否相同。因此,即使两个对象的属性值相同,但它们的内存地址不同,equals()方法也会返回false。

为了解决这个问题,你需要在自定义对象中重写equals()方法和hashCode()方法。equals()方法应该比较对象的属性值是否相等,而hashCode()方法应该返回对象属性值的哈希值。这样,ArrayList就可以正确地判断对象是否相等,并准确地包含或不包含特定的对象。

以下是一个示例代码,演示如何重写equals()方法和hashCode()方法:

代码语言:java
复制
public class MyObject {
    private String name;
    private int age;

    public MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MyObject myObject = (MyObject) o;
        return age == myObject.age &&
                Objects.equals(name, myObject.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

在这个示例中,我们定义了一个MyObject类,它有两个属性:name和age。我们重写了equals()方法和hashCode()方法,以便它们可以比较对象的属性值是否相等。

现在,如果你将MyObject对象添加到ArrayList中,并尝试添加具有相同属性值的另一个MyObject对象,那么ArrayList将正确地识别它们是相等的,并且不会将第二个对象添加到列表中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券