昨晚学习NSArray的时候,发现了NSIndexSet这个类,以前没有接触过,所以研究了下,现备忘如下:
NSIndexSet类同NSSet有相似的地方,它是不会含有重复的元素,而同NSSet不同的地方是,NSIndexSet其实是一个有序的集合(由小到大)。下面附上一段代码验证:
NSMutableIndexSet *set = [NSMutableIndexSet indexSetWithIndex:5];
[set addIndex:6];
[set addIndex:2];
[set addIndex:3];
[set addIndex:10];
[set addIndex:4];
[set addIndex:1];
[set addIndex:8];
[set addIndex:9];
[set addIndex:7];
[set addIndex:1];
[set addIndex:1];
//打印出来是10,即不会有重复元素
NSLog(@"set.count = %ld",set.count);
//根据api介绍,firstIndex返回的是第一个元素,lastIndex返回的是最后一个元素
//此处打印出来firstIndex永远都是最小值1,lastIndex永远都是最大值10
NSLog(@"firstIndex = %ld, lastIndex = %ld",[set firstIndex],[set lastIndex]);
//本来是想通过此方法验证NSIndexSet是从小到大排序的
//但是根据indexGreaterThanIndex:介绍并不能说明NSIndexSet就是递增排序的
//它是从整个NSIndexSet中找到大于且最接近的Index值(当然是有序的话,会提高不少效率)
NSUInteger currentIndex = [set firstIndex];
for (int i = 0; i < set.count; i ++) {
NSLog(@"currentIndex = %ld",currentIndex);
currentIndex = [set indexGreaterThanIndex:currentIndex];
}