Lua设计与实现

String实现

思路

使用Hash方式分配字符串,根据Hash值获取对应桶,与其存在的元素比对,若都不相同,则在桶中新增元素

需要判断的时候根据Hash值判断

❓是否需要再判断桶中所有元素

源码

比对桶中元素时,先对比字符串长度,不同的则认为肯定不相同。

最新的实现根据LUAI_MAXSHORTLEN = 40判断长短字符串,对于短字符串计算Hash并使用桶机制进行对比,对于长字符串通过随机种子来分配Hash

❓长字符串的Hash冲突如何解决

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

最后更新于 2022-08-01 11:21:14

加载中...