问题
我有一大堆字符串在一些对象之间重复.需要的是字符串实习.这些对象使用protobuf-net进行序列化和反序列化.我知道它应该处理.NET字符串intering,但我的测试表明我自己获取所有这些字符串并创建一个Dictionary< string,int> (值与其唯一标识符之间的映射),用int替换原始字符串值,可以得到更好的结果.
但问题在于映射.它只能单向搜索(我的意思是O(1) – 可搜索).但我想按键或按O(1)中的值搜索.不只是按键.
途径
字符串集是固定的.这听起来像一个数组.按值搜索是O(1),快速致盲.甚至没有在字典中分摊 – 只是不变,由索引.
数组的问题是按键搜索.这听起来像哈希.但是,嘿,n个哈希值并不是均匀分布在n元素阵列的n个单元中.使用模数,这可能会导致碰撞.那很糟.
我可以创建一个n * 1.1长度的数组,并尝试随机散列函数,直到我没有碰撞,但……那……只是……感觉……错了.
题
如何通过键(字符串)和值(整数)来解决问题并实现O(1)查找时间?
两个词典不是一个选项;)
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。