哈希表,对于很多开发人员来说简直亲切的不要不要的,但哈希表在严重的哈希冲突的时候其查询的时间复杂度就会严重退化(JDK1.8之前是拉链法 时间复杂度O(N),之后是红黑树 时间复杂度O(logn)),对于具有实时性要求的系统来说绝对是个大隐患,那么如何解决呢?
如果软件系统自主管理关键字(key)的生成和分发,则有一个很好的解决方案:任何查询算法都不如直接寻址,我们用1024作为横轴,用1024的倍数作为纵轴,构建一个所谓的查找坐标系,对于一个整数key,右移10位取得Y值,然后用Y值左移10位后与key的差值就是X值,如此存储位置确定了,也没有冲突,时间复杂度始终是O(1)。这个技术方案的关键是自主管理key的生成,其实也很简单:四字节整数 key从0开始++即可,如果看起来不舒服,则可以与一个常量整数略微计算一个以得到一个看起来比较professional的key。
哈希表杂谈
最新推荐文章于 2021-02-13 22:04:03 发布