关于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]];
            }
        }
原文地址:https://www.cnblogs.com/qls1992/p/5325175.html