【学习笔记】【Foundation】集合Set

时间:2023-03-08 20:14:59

不可变集合 NSSet

:集合元素无顺序,没有索引号,元素不可重复。

NSSet在功能上可看做是NSArray的父集,它是一个更通用的类。

NSSet包含如下常用方法:

setByAddingObject:

setByAddingObjectFromArray:

setByAddingObjectFromSet:

allObject:返回集合中所有元素组成的NSArray

anyObject:返回该集合的某个元素

containsObject:

member:

objectsPassingTest:

objectsWithOptions:passingTest:

isSubsetOfSet:

intersectsSet:

isEqualToSet:

NSSet底层判断元素重复的标准:

1.调用元素的hash方法来获得该对象的hashCode值,判断是否相等,如果相等,则放在相同的存储位置,且继续判断isEqual是否相同;

2.判断isEqual是否相同,如果不同则存放在hash表中的同一位置,并形成链。如果相同,则表示为同一元素,添加失败。

可变集合:NSMuableSet:

创建NSMutableSet集合时可指定底层Hash表的初始容量:

NSMutableSet* set=[NSMutableSet setWithCapacity:10];

增加了添加,删除元素的方法,并可以计算并集,交集,差集:

addObject:

removeObject:

removeAllObjects:

addObjectsFromArray:

unionSet:

minusSet:

intersectSet:

setSet:用后一个集合的元素替换已有集合中的元素

NSCountedSet:

每次添加同个元素一次,该元素的添加次数加1,只有该元素的添加次数为0时,这个元素才会被删除;

countForObject:获取指定元素的添加次数

有序集合:NSOrderedSet,NSMutableOrderedSet