0

我在arraylist android中有一个小问题,让我告诉你我面临的问题。

我有一个自定义联系人对象,其中包含有关姓名、联系电话和唯一 ID 的详细信息。当我查询数据库时,我得到了列表,我将存储在一个 ArrayList 中。

在这里我怎么做

Arraylist<contact> ctlist = new Arraylist(contact);
ctlist = getitemfromDB();

在下一个场景中,我会根据特定条件查询并获取一组联系人对象。我再次获得联系人列表对象。

Arraylist<contact> newctlist = new Arraylist(contact);
newctlist = getitemfromDB(condition);

现在,如果我从中选择任何对象newctlist并在其中搜索ctlist,尽管该对象存在于 ctlist 编译器中说找不到对象。

我可以知道上述方法有什么问题吗,如果我在同一个列表中搜索,即如果我从 newctlist 中选择一个对象并在其中搜索,我将得到正确的预期结果。

会有什么问题。

4

1 回答 1

2

正如 Mitch Wheat 所说,您正在尝试比较两个不同的对象。那是因为 List 使用equals方法来检索特定对象。我认为您没有在自定义类中覆盖它。只需根据您的联系人类中的字段实现equals和方法。hashCode

事实上,您应该尝试始终覆盖equalshashCode类中的方法,其中相等具有与引用相等不同的含义,例如bean。请到处看看 _ 此外,如果可以,请阅读 Josh Bloch 的“Effective Java”中的第三章,其中包含这些实现的质量规则(顺便说一句,阅读整本书,这很棒)。

请注意,有一些库可以帮助您正确实现这些库(Java7 java.util.Objects、Guava Objects、apache commonsEqualsBuilderHashCodeBuilder

小心,因为这些方法必须具有非常精确的数学特性

于 2012-11-06T15:14:11.207 回答