码迷,mamicode.com
首页 > 其他好文 > 详细

关于NSArray的去重

时间:2016-03-27 12:30:20      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

提到去重,第一反应就是for或while循环来遍历处理.

然后有了几种思路:

1) 两个循环嵌套 对比 然后去重:

但是这种方法会数据丢失,

arr为要去重的数组

1  for (int i=0; i<arr.count; i++) {
2     for(int j=0;j<arr.count;j++)
3             if([arr[i]==arr[j]]){
4                 [arr removeObjectAtIndex:j];
5             }
6         }

 

2) 然后就是 第 i 个 元素 与  第 i+1 个元素比对 去重

 for (int i=0; i<arr.count-1; i++) {
            if([arr[i] isEqualToString:arr[i+1]]){
                [arr removeObjectAtIndex:i];
                i--; //因为去除一个元素后arr.count也发生了改变,所以这里也要将i--
            }
        }

上面这种方法大致可以去重了,但是,如果最后一位元素与第一位元素相同,那么,你也是去不掉..

 

3)完美去重的方法:

所以在这里,我们新建一个可变数组,然后将原数组做一个isEqualTo的判断,再添加进新数组.

    NSMutableArray *newArr = [NSMutableArray array];
    for (int i=0; i<arr.count-1; i++) {
            if([newArr containsObject:[arr objectAtIndex:i]]==0){
                [newArr addObject:[arr objectAtIndex:i]];
            }
        }

 

关于NSArray的去重

标签:

原文地址:http://www.cnblogs.com/qls1992/p/5325175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!