如何解决用于在Android手机中有效存储联系人的最佳数据结构
如果“打字时搜索联系人”必须快速并且一个联系人可以有多个电话号码,您将如何将联系人存储在 Android 手机中。
解决方法
我认为 Trie Tree 会是最好的。在姓名字符的末尾,您可以存储一个对象及其元素,例如电话号码数组、电子邮件变量和一些您想要的额外变量。
在搜索名称时,您可以遍历 Trie Tree 中的字符并按排序顺序显示至少 n 个名称。我认为 Trie 树会比任何其他数据结构都快。
,您可以使用标准的 TreeMap<String,Contact>
来实现此功能(其中 Contact
将是一个存储电话号码等的类)。一种选择是使用 TreeMap.tailMap()
从用户迄今为止输入的内容开始获取条目的子地图(由原始地图支持,因此这应该很快)。您可以使用自定义比较器根据您的需要调整顺序(例如不区分大小写)
ps:这不能解决持久性问题,因此您可能希望从一开始就使用数据库,例如房间。前缀搜索通常可以通过搜索范围 (prefix,prefix + "\uffff")
来实现。对于数据库,通常会添加一个限制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。