arraylist列表<MyModel>。包含(MyModel)java不工作
我的课程MyModel包含:
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
现在我已经填充了MyModel类:
private final List<MyModel> listModel = new ArrayList<>();
private Mymodel myModel;
myModel= new MyModel ();
myModel.setValue(1);
myModel.setValue(2);
myModel.setValue(3);
listModel.add(myModel);
我想知道listModel是否包含myModel
listModel.contains(myModel)
我做了一些搜索,我知道contains使用了equals,但我正在找到正确的方法来找到解决方案。 提前谢谢
# 1 楼答案
检查包含的唯一方法是重写
equals()
方法。如果您检查contains方法是如何在ArrayList
中实现的,您可以很容易地找到它。contains()
方法将调用indexOf()
方法,该方法将返回列表中元素的索引。如果索引大于0,那么它contains()
方法将返回true让我们看看
indexOf()
方法是如何实现的这意味着
indexOf()
方法只是遍历列表中的元素,并在MyModel
类中调用equals()
方法因此,如果不重写对象类中的
equals()
方法,就没有其他方法可以检查contains# 2 楼答案
如果查看
ArrayList
类中contains
的实现,您会看到它在内部使用equals
方法来查找对象:因此,您需要为
MyModel
类创建equals
和hashCode
。您可以借助您正在使用的IDE为您生成它:例如:
# 3 楼答案
尝试运行以下代码,我已经对其进行了修改并添加了日志,现在您可以检查控制台上打印的输出: 我建议您使用equals()检查对象
}