【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
)
顺序为有序的.
版权声明:转载请注明出处。

相关文章推荐

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

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

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

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

为什么处理有序数组比无序数组快?

于某些怪异的原因,下面这段C++代码表现的异乎寻常—-当这段代码作用于有序数据时其速度可以提高将近6倍,这真是令人惊奇。 1 2 3 4 5 ...

从一堆(大量的)无序不重复数组成的数组中寻找一指定数出现的位置

题目要求:从一堆给定的无序不重复数组中寻找某一指定数在数组中出现的位置;思考方向:通过空间换时间的方法,将每个数组中的元素放入一个map容器中,将数组中的值作为key,下标作为value即可。

自学iOS开发系列----C语言(数组)

c语言的编译和运行打开终端输入$ touch arr.c$ open arr.c在打开的文件中输入include int main(int argc,const char * argv[]){ ...

iOS开发学习第四课——数组Array

今天学习的内容是数组之中最为简单的一维数组以及数组排序之中最为简单的冒泡排序。 1.数组 所谓数组,其实就是相同数据类型的元素按一定顺序排列的集合,这些元素可以是整型,可以是浮点型,也可以是字...

iOS开发OC基础:OC中数组对象NSArray的常用方法

本文介绍了OC的数组对象的基本方法的使用: 因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作。 其中Person.h中的代码为:

iOS开发-C语言-数组

一、数组的基本概念及分类 1、基本概念 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。 在C语言中,数组属于构造数据类型。...

iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

1、初识沙盒:(1)、存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的。要想数据永久保存,将数据保存成文件,存储到程序的沙盒里就可实现这一功能; (2)、沙盒的本质就是一个文件夹...

IOS开发系列--C语言之数组和字符串

本文转自:Kenshin Cui's Blog 概览 数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等。而在C语言中是没有Strin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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