我一定有一些奇怪的误解......
考虑:
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
中元素的顺序是不可预测的。
但是,如果不按某种顺序或其他顺序排序,[NSOrderedSetorderedSetWithSet:mySet]
应该实现什么?
来自文档:
You can use ordered sets as an alternative to arrays when the order of elements is important and performance in testing whether an object is contained in the set is a consideration—testing for membership of an array is slower than testing for membership of a set.
再说一次,NSOrderedSet OrderedSetWithSet:
应该为您提供的顺序是什么?
最佳答案
您混淆了“有序”和“排序”。数组是一个有序集合,这意味着它有第一个、第二个、第三个、直到最后一个元素。集合或字典是无序集合,元素没有顺序。没有第一个或最后一个元素。
NSOrderedSet 结合了 NSSet 和 NSArray 的属性。与数组一样,您可以在末尾添加元素或将它们插入数组中的任何位置,或删除任何位置的元素,或对元素进行排序。与 NSSet 一样,您可以在恒定时间内查找某个元素是否已经存在。
有序集合可以排序,但不会自动排序。无序集合无法排序,因为它们没有排序。
另一方面,您可以阅读 NSOrderedSet 的文档,这使得这一切都非常清楚。
关于nsarray - NSOrderedSet 未显示...顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480625/