关于NSArray的去重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于NSArray的去重相关的知识,希望对你有一定的参考价值。

提到去重,第一反应就是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的去重的主要内容,如果未能解决你的问题,请参考以下文章

iOS 数组的去重(普通的无序的去重和排序好的去重)

iOS 数组的去重(普通的无序的去重和排序好的去重)

代码模板实现双向链表的去重拼接合并排序

常用的去重和排序

用代码实现对数组重复元素的去重-面试思考题

数组的去重,以及随机一个验证码