提到去重,第一反应就是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]]; } }
时间: 2024-10-26 00:29:10