zoukankan      html  css  js  c++  java
  • iOS 数组的去重(普通的无序的去重和排序好的去重)

    本文转载至 http://blog.csdn.net/zhaopenghhhhhh/article/details/24972645

     

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

    1.利用NSDictionary的AllKeys(AllValues)方法

    可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。

    示例代码:

        NSArray *arr = @[@111,@222,@111];

        NSMutableDictionary *dict = [NSMutableDictionary dictionary];

        for (NSNumber *number in arr) {

            [dict setObject:number forKey:number];

        }

        NSLog(@"%@",[dict allValues]);

    输出结果为:

     

    2013-05-21 12:03:49.449 test1[4377:c07] (

        111,

        222

    )

     

    2.利用NSSet的AllObjects方法

    这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。

    示例代码:

        NSArray *arr = @[@111,@222,@111];

        NSSet *set = [NSSet setWithArray:arr];

        NSLog(@"%@",[set allObjects]);

    输出结果为:

     

    2013-05-21 12:06:26.508 test1[4547:c07] (

        111,

        222

    )

     

     

     

     

    排序的去重

     

    很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。

     

    最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会

     

    打乱。于是换了另外一种方法如下:

     

     

        NSMutableArray *categoryArray = [[NSMutableArray allocinit];

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

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

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

            }

            

        }

     

    顺序就不会乱了。

  • 相关阅读:
    游戏开发中——垂直同步、绘制效率、显示器刷新频率与帧率
    python 异常
    python 多文件知识
    python if,for,while
    python 算术运算
    1.英语单词笔记
    Java import的作用
    java基础点
    Eclipse Java注释模板设置详解
    Java文档注释详解
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/4230481.html
Copyright © 2011-2022 走看看