iOS官方文档 Foundation篇---NSHashTable

NSHashTable

类似于集合的集合,但具有更广泛的可用内存语义。继承自NSObject;NSHashTable具有以下特点:

  • 它是内容可变的;
  • 可以容纳对其成员的弱引用;
  • 成员可以在输入上复制,也可以使用指针标识进行相等和散列;
  • 可以包含任意指针(其成员不限于作为对象);
创建
// 根据选项创建哈希表
NSHashTable *hashTable = [[NSHashTable alloc]initWithOptions:NSPointerFunctionsStrongMemory capacity:5];

NSPointerFunctions *functions = [[NSPointerFunctions alloc]initWithOptions:NSPointerFunctionsStrongMemory];
// 根据方法创建哈希表
NSHashTable *hashTable1 = [[NSHashTable alloc]initWithPointerFunctions:functions capacity:5];

// 创建存储弱引用内容的哈希表
NSHashTable *hashTable2 = [NSHashTable weakObjectsHashTable];

// 创建指定指针函数选项的哈希表
NSHashTable *hashTable3 = [NSHashTable hashTableWithOptions:NSPointerFunctionsStrongMemory];
访问内容
NSHashTable *hashTable = [[NSHashTable alloc]initWithOptions:NSPointerFunctionsStrongMemory capacity:5];
[hashTable addObject:@"1"];
[hashTable addObject:@"2"];
[hashTable addObject:@"3"];

// 获取哈希表中的一个对象
NSString *anyObj = [hashTable anyObject];//1

// 获取哈希表中全部对象
NSArray *objArr = [hashTable allObjects];//(1,2,3)

// 包含哈希表元素的集合
NSSet *set = [hashTable setRepresentation];//{(1,3,2)}

// 获取哈希表中的元素数量
NSUInteger count = [hashTable count];//3

// 判断哈希表中是否包含指定元素
BOOL isCon = [hashTable containsObject:@"1"];//YES

// 确定哈希表是否包含给定对象,并返回该对象(如果存在)
NSString *obj = [hashTable member:@"1"];//1

// 根据枚举器遍历哈希表元素
NSEnumerator *enumerator = [hashTable objectEnumerator];
id object;
while (object = [enumerator nextObject]) {
    NSLog(@"开始打印:%@\n",object);
    /*
    开始打印:1
    开始打印:3
    开始打印:2
     */
}
访问内容
NSHashTable *hashTable = [[NSHashTable alloc]initWithOptions:NSPointerFunctionsStrongMemory capacity:5];

// 将指定对象添加到哈希表
[hashTable addObject:@"1"];

// 从哈希表中移除指定元素
[hashTable removeObject:@"1"];

// 从哈希表中删除所有元素
[hashTable removeAllObjects];
比较哈希表
NSHashTable *hashTable = [[NSHashTable alloc]initWithOptions:NSPointerFunctionsStrongMemory capacity:5];
[hashTable addObject:@"1"];
[hashTable addObject:@"2"];
[hashTable addObject:@"3"];
[hashTable addObject:@"4"];
[hashTable addObject:@"5"];

NSHashTable *hashTable1 = [[NSHashTable alloc]initWithOptions:NSPointerFunctionsStrongMemory capacity:5];
[hashTable1 addObject:@"3"];
[hashTable1 addObject:@"4"];
[hashTable1 addObject:@"5"];
[hashTable1 addObject:@"6"];
[hashTable1 addObject:@"7"];

// 给定的哈希表是否与接收哈希表相交
BOOL isIn = [hashTable intersectsHashTable:hashTable1];//YES

// 接收哈希表中的每个元素是否也存在于另一个给定哈希表中。
BOOL isSub = [hashTable isSubsetOfHashTable:hashTable1];//NO

// 指示给定的哈希表是否等于接收哈希表。
BOOL isEq = [hashTable isEqualToHashTable:hashTable1];//NO

// 从接收哈希表中删除另一个给定哈希表中的每个元素(如果存在)
[hashTable minusHashTable:hashTable1];//(1,2)

// 将另一个给定哈希表中的每个元素添加到接收哈希表(如果不存在)。
[hashTable unionHashTable:hashTable1];//(1,6,2,5,7,3,4)

// 从接收哈希表中删除不是另一个给定哈希表的成员的每个元素。
[hashTable intersectHashTable:hashTable1];//(6,5,7,3,4)
欢迎留言指正,会持续更新。。。

你可能感兴趣的:(iOS官方文档 Foundation篇---NSHashTable)