美文网首页
NSSet和NSArray 去重 排序

NSSet和NSArray 去重 排序

作者: KB_MORE | 来源:发表于2021-02-05 10:32 被阅读0次

数组去重简单方法
用NSSet来搞定

NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSSet *set = [NSSet setWithArray:arr];
NSLog(@"set%@n", set);

打印出来的结果

{(
"12-11",
"12-14",
"12-13",
"12-12"
)}

这样打印的结果是无序的,用户要看有序的结果。

查了一下NSSet的排序,发现有个

@interface NSSet (NSSortDescriptorSorting)
- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors NS_AVAILABLE(10_6, 4_0);    // returns a new array by sorting the objects of the receiver
@end

传递的参数是NSSortDescriptor数组。

因此修改后代码如下

NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSSet *set = [NSSet setWithArray:arr];
NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
NSArray *sortSetArray = [set sortedArrayUsingDescriptors:sortDesc];
NSLog(@"set%@nsort set%@", set, sortSetArray);

打印出来结果

{(
"12-11",
"12-14",
"12-13",
"12-12"
)}
sort set(
"12-11",
"12-12",
"12-13",
"12-14"
)

发现NSSortDescriptor是专门用来排序的描述符。可以用来排序NSSet,NSDictionary,NSArray。测试一下数组的使用。代码如下

NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
NSArray *sort1Array = [arr sortedArrayUsingDescriptors:sortDesc];
NSLog(@"sort1 array: %@n",sort1Array);

打印出来

sort1 array: (
"12-11",
"12-11",
"12-11",
"12-12",
"12-13",
"12-14"
)

想起来一直用NSArray的排序代码

NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSArray *sort2Array = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 localizedCompare:obj2];
}];
NSLog(@"sort2 array %@", sort2Array);

以上只是示例,具体NSSortDescriptor和array的高级用法,大家可以查文档,可以简化代码。

相关文章

  • NSSet和NSArray 去重 排序

    数组去重简单方法用NSSet来搞定 打印出来的结果 这样打印的结果是无序的,用户要看有序的结果。 查了一下NSSe...

  • 9.30 NSSet 集合 (去重,排序)

    NSSet 集合 最有用的功能:去重,排序 冒泡排序

  • 基础零碎

    1.NSArray和NSSet的区别 >.NSArray内存中存储地址连续,而NSSet不连续 >.NSSet...

  • NSArray和NSSet

    NSArray存储比NSSet要快,NSSet查找速度要比NSArray要快。NSDictionary和NSMap...

  • NSSet

    NSSet:无序集合NSSet和NSArray的区别:NSArray可以通过角标获取元素,NSSet是无序的不能用...

  • NSSet和排序方法、数组去重

    NSSet 去掉数组中重复的数NSSet方法 NSDictionary方法 数组排序 冒泡排序 sort方法排序(快排)

  • iOS 奇技淫巧总结

    数组去重 利用 NSSet 的特性,NSSet 是无序、没有重复元素的数组,如果需要排序,可以考虑用 NSSort...

  • 2020:一份高级iOS面试题

    1、NSArray与NSSet的区别? NSArray内存中存储地址连续,而NSSet不连续 NSSet效率高,内...

  • iOS开发三年经验 靠这份面试题让我从15k到25k

    1、NSArray与NSSet的区别? NSArray内存中存储地址连续,而NSSet不连续 NSSet效率高,内...

  • iOS高级面试题(转载)

    1、NSArray与NSSet的区别? NSArray内存中存储地址连续,而NSSet不连续 NSSet效率高,内...

网友评论

      本文标题:NSSet和NSArray 去重 排序

      本文链接:https://www.haomeiwen.com/subject/jmywtltx.html