【iOS开发】数组的去重(无序和有序)

原创 2016年05月30日 15:18:13

一、 无序的去重

1.利用NSDictionary的AllKeys(AllValues)方法
可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。
代码:
    NSArray *arr =@[@11,@22,@11];
    NSMutableDictionary *dict = [NSMutableDictionarydictionary];
    for (NSNumber *numberin arr) 
    {
        [dict setObject:numberforKey:number];
    }
    NSLog(@"%@",[dictallValues]);
输出结果为:
2016-03-09 17:52:46.421 test[9555:408408] (
    22,
    11
)
2.利用NSSet的AllObjects方法
这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
代码:
    NSArray *arr =@[@111,@222,@111];
    NSSet *set = [NSSetsetWithArray:arr];
    NSLog(@"%@",[setallObjects]);
输出结果为:
2016-03-09 17:55:13.081 test[9577:411377] (
    111,
    222
)

二、 有序的去重

很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。
最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会打乱。于是换了另外一种方法如下:
代码:
    NSArray *classArray =@[@1,@2,@1,@3,@3,@1];

    NSMutableArray *categoryArray = [[NSMutableArray alloc] init];

    for (unsigned i =0; i < [classArray count]; i++)
    {

        if ([categoryArray containsObject:[classArray objectAtIndex:i]] == NO)
        {

            [categoryArray addObject:[classArray objectAtIndex:i]];

        }

    }
    NSLog(@"---%@",categoryArray);
输出结果为:
2016-03-09 17:59:12.554 test[9598:414513] ---(
    1,
    2,
    3
)
顺序为有序的.
版权声明:转载请注明出处。

算法练习:两指针之有序数组去重

问题描述 给出一个有序数组,就地移除重复元素,保持每个元素只出现一次,并返回新数组的长度。   问题分析 这个比较简单,直接使用两个指针,一个在前,一个在后,扫描一遍数组即可。时间复杂度为O(n^2)...

从dictionary中用allkeys取出的值怎么排序

转自: http://www.cocoachina.com/ask/questions/show/87428 我从dictionary中用allkeys取出了值的顺序和我当初放入dictiona...
  • yuanya
  • yuanya
  • 2013年08月16日 09:16
  • 1713

iOS: NSDictionary的方法allKeysForObject:

- (NSArray *)allKeysForObject:(id)anObject

NSSet类型 以及与NSArray区别

NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSAr...

集合,数组,有序

数组中的数据是可以随便排的; 这里的有序不是指的内容的有序,而是存储位置的有序,比如 一个数组int a[10]; 那么对于存储的位置,a[0]必然在a[1]之前,a[8]必然在a[4]...

数组去重(c语言实现)

起因 在九度练习acm的时候,有道题我认为应该先进行数组去重操作,由于工作中我大部分都是用php写代码,php中数组去重只要一个array_diff()函数即可实现,但是到C语言中,我就没有现成的a...

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

有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下。 1.利用NSDictionary...

关于iOS去除数组中重复数据的几种方法

在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 代码:    NSArray *dat...
  • wm9028
  • wm9028
  • 2015年11月19日 14:29
  • 15907

iOS使用分类(category)实现有序字典

iOS使用分类(category)实现有序字典什么是分类OC中为了对类的方法进行扩展,添加了分类的概念。分类能够做到的事情主要是:即使在你不知道一个类的源码情况下,向这个类添加扩展的方法。关于字典OC...

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

有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下。 1.利用NSDictionary的A...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【iOS开发】数组的去重(无序和有序)
举报原因:
原因补充:

(最多只允许输入30个字)