我一定有什么奇怪的误解..。
考虑:
NSSet * mySet = [NSSet setWithArray:@[@1, @9, @3]] ;
NSOrderedSet * mySortedSet = [NSOrderedSet orderedSetWithSet:mySet] ;
for (NSNumber * n in mySet) {
NSLog(@"unsorted: %@", n) ;
}
for (NSNumber * n in mySortedSet) {
NSLog(@"--sorted: %@", n) ;
}以及控制台日志:
2014-05-05 20:38:46.645 WoGa[50557:60b] unsorted: 9
2014-05-05 20:38:48.675 WoGa[50557:60b] unsorted: 1
2014-05-05 20:38:49.875 WoGa[50557:60b] unsorted: 3
2014-05-05 20:38:54.277 WoGa[50557:60b] --sorted: 9
2014-05-05 20:38:55.544 WoGa[50557:60b] --sorted: 1
2014-05-05 20:38:56.684 WoGa[50557:60b] --sorted: 3哈?怎么会是“点菜”?如果需要的话,我对自己排序没有问题,但是NSOrderedSet到底是什么呢?
我可以接受mySet中元素的顺序是不可预测的。但是,如果没有按某种顺序排序,[NSOrderedSet orderedSetWithSet:mySet]应该实现什么呢?
从文件中:
当元素的顺序很重要时,可以使用有序集作为数组的替代方法,并且测试集合中是否包含对象的性能是考虑因素&数组成员资格的测试要比测试集合的成员资格慢。
再说一遍,NSOrderedSet orderedSetWithSet:应该为您提供什么订单?
发布于 2014-05-05 19:59:15
你混淆了“有序”和“排序”。数组是一个有序的集合,这意味着它有第一个、第二个、第三个,直到最后一个元素。集合或字典是一个无序的集合,没有元素的排序。没有第一个或最后一个元素。
NSOrderedSet结合了NSSet和NSArray的属性。像数组一样,可以在数组的末尾添加元素或将它们插入数组的任何位置,也可以在任何地方删除元素,或者对元素进行排序。与NSSet类似,您可以查找元素是否已在恒定时间内存在。
可以对有序的集合进行排序,但它们不会自动排序。无序集合无法排序,因为它们没有排序。
另一方面,您可以只阅读NSOrderedSet的文档,这使这一切变得非常清楚。
https://stackoverflow.com/questions/23480625
复制相似问题