美文网首页
关于数组去除重复的数据的方法推荐

关于数组去除重复的数据的方法推荐

作者: 流年划过颜夕 | 来源:发表于2018-06-01 13:20 被阅读11次

    在日常工作中,经常会遇见在数组中有重复的数据,可能是服务器返回中本来就有,或者异常操作造成的重复数据,所以往往需要去除重复数据或者做安全过滤手段防止重复数据产生。

    对于简单的数据,比如数组中仅含有的成员是字符串,很多人一般就用for循环或者数组的containsObject来去除,但是经常数组里面会有很多复杂的结构类型,最常见的比如字典。

    如果还是用上述的方法,当然可行,但是不仅麻烦,而且效率会很低下。

    这里强列推荐下NSSet(集合)
    NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash,一个hash过程就能找到A存储的位置。而对于NSArray,若想知道A到底在不在数组中,则需要便利整个数组,显然效率较低了;

    而在官方文档中也这样写道:
    “You can use sets as an alternative to arrays when the order of elements isn’t important and performance in testing whether an object is contained in the set is a consideration—while arrays are ordered, testing for membership is slower than with sets.”
    意思是在不考虑顺序的情况下,测试是否包含object,最好用NSSet,并且NSSet的性能比NSArry好.

    用法也十分简单,一步搞定方便:
    dataArray 里还有重复的数据
    NSSet *set = [NSSet setWithArray:dataArray];
    此时,set里面的所有成员已经是非重复的。
    如果需要排序,转回NSArray类型进行排序即可。
    NSArray *dataArray =[set allObjects]

    相关文章

      网友评论

          本文标题:关于数组去除重复的数据的方法推荐

          本文链接:https://www.haomeiwen.com/subject/spahsftx.html