java - 优化android中列表的支持

标签 java android list arraylist

我在 android arraylist 中遇到了小问题,让我告诉你我在哪里遇到了问题。

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

这是我的做法

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

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

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

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

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

会出现什么问题。

最佳答案

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

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

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

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

关于java - 优化android中列表的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252801/

相关文章:

android - 在三星手机上进入 PIP(画中画)模式时出现错误 "Device doesn' t 支持画中画模式

android - 解析 CVM 列表 : when to show pin pad after getting CVM list in SFI, 需要任何命令

java - 需要帮助对角移动角色

java - 在 JavaFX 中使用 UI 显示和创建枚举的最佳实践是什么?

java - KeyListener 的 AWT-EventQueue-0 错误

list - Lisp 更新列表

c# - 仅使用以另一个组合框中所选项目第一个字符开头的结果填充组合框

java - 我可以在 Kafka 处理器中拥有本地状态吗?

android - 自定义 View 问题

list - Kotlin 将 List 转换为可变参数