【发布时间】:2018-11-30 16:45:02
【问题描述】:
我有一个长字符串列表,应该反复比较。我正在寻找的是一种基于字符串值生成唯一整数值的方法,该字符串具有最小的 RAM/CPU 使用率,并且可以完全信任。为相同的字符串生成值,应该总是返回相同的值。我知道有很多基于散列/加密机制的算法,但是它们使用大量资源,而且速度不够快。提前致谢。
【问题讨论】:
-
@Igor 哦,请不要,不要在这里推荐;这不是
GetHashCode()所做或意味着的 -
您在这里可能遇到的大问题是:您所追求的并不是真正的哈希 - 听起来它甚至需要比加密哈希更可靠(加密哈希仍然会发生冲突)。如果您需要超过 40 亿个(ish)字符串,您也会遇到一个大问题,因为:这就是您拥有的
int值的数量。您在这里基本上需要的是:一个大型的字符串查找数据库。 -
这听起来像XY problem。你的最终目标是什么?你为什么要这样做? (你所说的“应该反复比较”是什么意思,分享你现有的实现或类似的东西也会有帮助)
-
显然,只有字符串本身是完全唯一的值 - 任何减少到整数都会有冲突。可接受的碰撞百分比是多少?你能像哈希表一样处理并在碰撞后验证匹配吗?
标签: c# c#-4.0 uniqueidentifier