Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSSet如何确保it对象的唯一性?_Ios_Nsset - Fatal编程技术网

Ios NSSet如何确保it对象的唯一性?

Ios NSSet如何确保it对象的唯一性?,ios,nsset,Ios,Nsset,我想知道如何NSSet确保它只有唯一的对象?当我们尝试添加重复值时,它根据哪些标准确定它已经具有该值?我想知道基本的唯一性标准 NSSet使用对象的isEqual:方法的实现来确定对象的相等性。它还使用hash来加快查找速度 -(BOOL)isEqual:(id)other; -(NSUInteger)hash; 当两个对象相等时,它们的hash方法必须返回相同的值(但是,具有相同hash的对象不一定彼此相等) 当您的hash和isEqual:是相等的时,NSSet可以通过只检查其hash发生

我想知道如何
NSSet
确保它只有唯一的对象?当我们尝试添加重复值时,它根据哪些标准确定它已经具有该值?我想知道基本的唯一性标准

NSSet
使用对象的
isEqual:
方法的实现来确定对象的相等性。它还使用
hash
来加快查找速度

-(BOOL)isEqual:(id)other;
-(NSUInteger)hash;
当两个对象相等时,它们的
hash
方法必须返回相同的值(但是,具有相同
hash
的对象不一定彼此相等)


当您的
hash
isEqual:
是相等的时,
NSSet
可以通过只检查其
hash
发生冲突的少数对象来确定相等性使用要添加到集合中的对象的
散列

NSSet
使用对象的
isEqual:
方法的实现来确定对象的相等性。它还使用
hash
来加快查找速度

-(BOOL)isEqual:(id)other;
-(NSUInteger)hash;
当两个对象相等时,它们的
hash
方法必须返回相同的值(但是,具有相同
hash
的对象不一定彼此相等)


当您的
hash
isEqual:
相等时,
NSSet
可以通过只检查其
hash
与要添加到集合中的对象的
hash
发生“碰撞”的少数对象来确定相等性。

请查看苹果的官方文档。如您所见,大多数容器都使用
散列
来比较对象。

请查看apple官方文档。如您所见,大多数容器都使用
散列来比较对象。

我想知道NSSet如何确保它只有唯一的对象。

无论何时尝试添加对象,它都会检查其中所有其他现有对象的哈希值。基于此,它将保持其独特性

如果两个对象相等,则它们必须具有相同的哈希值

当我们尝试添加重复值时,它根据哪些标准确定它已经具有该值?

如果新对象哈希值与现有哈希值匹配,则将其视为dublicate


我想知道NSSet如何确保它只有唯一的对象

无论何时尝试添加对象,它都会检查其中所有其他现有对象的哈希值。基于此,它将保持其独特性

如果两个对象相等,则它们必须具有相同的哈希值

当我们尝试添加重复值时,它根据哪些标准确定它已经具有该值?

如果新对象哈希值与现有哈希值匹配,则将其视为dublicate


首先,集合检查对象的值。如果散列数不相等,则意味着保证对象不同。但是,如果散列相等,并不意味着对象必须相等,因此集合必须确保并检查它们的
相等:
方法首先集合检查对象的
散列值。如果散列数不相等,则意味着保证对象不同。如果散列相等,但这并不意味着对象必须相等,因此集合必须确保并检查它们的
isEqual:
方法

,因此您的答案是:NSSet将其所有对象与新插入的对象进行比较,以查看它是否已经存在?@Basheer\u CAD请重新阅读我的答案,尤其是最后一部分,我说的是根据散列值检查少数对象。所以你的答案是:NSSet将其所有对象与新插入的对象进行比较,看看它是否已经存在?@Basheer_CAD请重新阅读我的答案,特别是最后一部分,我说的是根据散列值检查少数对象。