【发布时间】:2011-06-20 07:00:50
【问题描述】:
我有一个这样的对象列表:
ArrayList<Phone> list = new ArrayList();
list.add(new Phone("+44 20 8765 4321", "mobile", "26"));
list.add(new Phone("+44 20 8765 4322", "home", "23"));
list.add(new Phone("+44 20 8765 4323", "mobile", "27"));
list.add(new Phone("+44 20 8765 4324", "work", "26"));
list.add(new Phone("+44 20 8765 4325", "home", "27"));
list.add(new Phone("+44 20 8765 4326", "home", "26"));
(23、26、27 是联系人的 id)。如何“查询”此列表以获取具有多个电话号码 {"26", "27"} 的联系人的 ID?
我需要一个不会将很多小对象存储到内存的最佳解决方案(我的糟糕实现导致 GC 频繁运行,长时间冻结手机)。
【问题讨论】:
-
一般来说,你不会。在这种情况下,我建议使用
Map<Contact, List<Phone>>作为您的数据结构,或使用后备数据存储来存储具有适当关系的信息。 -
@zorglub76:“..拥有多个电话号码的联系人..”我有手机但没有固定电话(没有电话@
home)。所以你的逻辑是错误的。 -
你能展示一下Phone类的代码吗?或者只是告诉电话类的数据字段的名称。
-
@Andrew - 你不会进入新列表 - 你将成为一个只有一个电话号码的联系人。 @pankaj - 类的字段都是字符串(“number”、“contactId”、“phoneType”、“contactName”)
-
@zorglub76:起初我以为“26”等是电话类型。我的错。
标签: java android collections