首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOrderedSet没有显示..。订单?

NSOrderedSet没有显示..。订单?
EN

Stack Overflow用户
提问于 2014-05-05 19:51:58
回答 1查看 872关注 0票数 2

我一定有什么奇怪的误解..。

考虑:

代码语言:javascript
复制
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) ;
}

以及控制台日志:

代码语言:javascript
复制
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:应该为您提供什么订单?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 19:59:15

你混淆了“有序”和“排序”。数组是一个有序的集合,这意味着它有第一个、第二个、第三个,直到最后一个元素。集合或字典是一个无序的集合,没有元素的排序。没有第一个或最后一个元素。

NSOrderedSet结合了NSSet和NSArray的属性。像数组一样,可以在数组的末尾添加元素或将它们插入数组的任何位置,也可以在任何地方删除元素,或者对元素进行排序。与NSSet类似,您可以查找元素是否已在恒定时间内存在。

可以对有序的集合进行排序,但它们不会自动排序。无序集合无法排序,因为它们没有排序。

另一方面,您可以只阅读NSOrderedSet的文档,这使这一切变得非常清楚。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23480625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档