数组去重
2016-03-04 16:15
155 查看
有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下。
1.利用NSDictionary的AllKeys(AllValues)方法
可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。
示例代码:
NSArray *arr = @[@111,@222,@111];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSNumber *number in arr) {
[dict setObject:number forKey:number];
}
NSLog(@"%@",[dict allValues]);
输出结果为:
2013-05-21 12:03:49.449 test1[4377:c07] (
111,
222
)
2.利用NSSet的AllObjects方法
这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
示例代码:
NSArray *arr = @[@111,@222,@111];
NSSet *set = [NSSet setWithArray:arr];
NSLog(@"%@",[set allObjects]);
输出结果为:
2013-05-21 12:06:26.508 test1[4547:c07] (
111,
222
)
排序的去重
很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。
最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会
打乱。于是换了另外一种方法如下:
NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < [nameArray count]; i++){
if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){
[categoryArray addObject:[nameArray objectAtIndex:i]];
}
}
顺序就不会乱了。
1.利用NSDictionary的AllKeys(AllValues)方法
可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。
示例代码:
NSArray *arr = @[@111,@222,@111];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSNumber *number in arr) {
[dict setObject:number forKey:number];
}
NSLog(@"%@",[dict allValues]);
输出结果为:
2013-05-21 12:03:49.449 test1[4377:c07] (
111,
222
)
2.利用NSSet的AllObjects方法
这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
示例代码:
NSArray *arr = @[@111,@222,@111];
NSSet *set = [NSSet setWithArray:arr];
NSLog(@"%@",[set allObjects]);
输出结果为:
2013-05-21 12:06:26.508 test1[4547:c07] (
111,
222
)
排序的去重
很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。
最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会
打乱。于是换了另外一种方法如下:
NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < [nameArray count]; i++){
if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){
[categoryArray addObject:[nameArray objectAtIndex:i]];
}
}
顺序就不会乱了。
相关文章推荐
- Redis与Memcached的incr/decr差异对比
- php.ini中date.timezone设置
- 了解java的序列化与反序列化
- TextBox.Text += “string”; vs TextBox.AppendText(“string”);
- net.sf.json.JSONObject 和org.json.JSONObject 的差别
- java Serializable和Externalizable序列化反序列化详解
- jquery 多选下拉框
- request请求对象实例
- spring拦截器引起的问题
- 查询每个id的最新更新时间
- 决心书
- bootstrap模态框之加载页面至modal-boby
- Android 改变statusbar背景-沉浸式状态栏与导航栏
- String类中的IndexOf和CharAt的区别
- 行内元素与块级元素分类
- 如何查看App provision profile文件中的钥匙链访问组名称
- 如何查看App provision profile文件中的钥匙链访问组名称
- 38-题目1183:守形数
- 如何查看App provision profile文件中的钥匙链访问组名称
- springMVC+hibernate+jdbc+mybatis整合 支持全注解方式 支持全配置方式