我正在实施一个系统,我有一个名单列表,每个人有1个电话号码.我需要能够取一个名字并查找电话号码,或者拿一个电话号码并查找姓名.
我知道我可以通过两个哈希表来实现这一点 – 一个从名称到电话号码,一个从电话号码到名字.然后我可以在O(1)时间向任意方向查找.然而,这似乎是我存储了太多数据 – 每个名称和每个电话号码都存储了两次.
有没有办法更有效地做到这一点?我应该使用什么数据结构来存储姓名和电话号码?
如果相关,我用Java编码.
非常感谢!
解决方法
Java没有提供开箱即用的双向哈希表.除非你愿意使用第三方库(这会为你隐藏两个哈希表)或者重新实现HashMap的重要部分< K,V>你依赖于两个哈希表的解决方案一样好. ;.
Then I can look up in either direction in O(1) time. However this seems like I am storing too much data – every name and every phone number is stored twice.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。