草庐IT

hashValues

全部标签

Swift 4 : Inbuilt String. hashValue 为不同的字符串生成相同的结果

在使用Swift内置的字符串hashValue生成哈希值时,我们发现了两个不同的字符串生成相同哈希值的情况……但是碰撞的原因非常扑朔迷离……取这两个字符串:varstr1="""0000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000"""//Containsasingle1charactervarstr2="""000000000000000000000000000000000000000000000000000000000

swift - Bool.hashValue 转换为 Int 有效吗?

在某些情况下和一些代码中,我看到hashValue用于将Bool转换为Int。但是,代码letsomeValue=trueletsomeOtherValue=falseprint(someValue.hashValue)print(someOtherValue.hashValue)获取输出-55198955591291910407814522403520016984不过,我希望有1和0。我使用XCode10.0beta2(10L177m),MacOSHighSierra和Swift4.2。我可以切换到Swift4.0以获得同样的结果。现在,是我做错了什么还是hashValue没有可靠的

swift - swift协议(protocol)Hashable中hashValue的性能考虑

除了是一个唯一的整数之外,对于可以插入到SetHashable类型中的hashValue的选择还有任何性能考虑?例如,我选择的整数值的大小会影响后备数组的大小吗?即,如果我将4000的hashValue分配给Hashable类型并将其插入到Set中,则支持数组长度至少需要4000? 最佳答案 hashValue不必是唯一的。在绝大多数情况下,它不能是唯一的(任何大于64位的类型必然具有比其散列更多的可能状态)。您不选择整数的大小。它将始终是Int(这是机器字的大小)。但是,hashValue应该很快,理想情况下是O(1)。它通常用于

swift - Swift 中的 NSObject 子类 : hash vs hashValue, isEqual vs ==

在Swift中子类化NSObject时,您应该覆盖hash还是实现Hashable?此外,您应该覆盖isEqual:还是实现==运算符? 最佳答案 NSObject已经符合Hashable协议(protocol):extensionNSObject:Equatable,Hashable{///Thehashvalue.//////**Axiom:**`x==y`implies`x.hashValue==y.hashValue`//////-Note:thehashvalueisnotguaranteedtobestableacros
12