多语言展示
当前在线:253今日阅读:99今日分享:20

最好的办法去掉重复NSMutableArray中的值

我们在好多时候尝尝会再NSMutableArray里边添加进去一些重复的对象,但是要显示的时候如果直接显现的话,就会有一些重复的对象显示出来,这样会给用户造成不好的体验。当然了,我们一般也不会允许这样的事情出现。所以这时,我们就应当去除NSMutableArray里边的重复的对象再显示。在这里我们简单介绍几种去除重复值的方法
工具/原料
1

Xcode

2

Mac

方法/步骤
1

如果不担心排序的问题,又想要节省你的代码量的话,我们在这儿可以用一句代码就解决这个问题。其中yourarray就是带有重复值的NSMutableArray,uniquearray就是去除重复值得到的Array

2

如果你不担心的对象的顺序.不过又一次如果你不担心我的顺序.然后你为什么不将它们存储在你的 NSSet ? 添加 NSOrderedSet 到iOS 5和Mac系统X 10.7.  这也是比较常用的。

4

这是比较简洁的方法,也是一个比较老得方法。来删除重复项的 NSArray . 如果我们使用 Object Operators从key Coding  我们可以这样做。

5

在任意case , 检查要查看一个项目是否已包含在目标数组( 使用 containsObject: 在我的例子中, 或 indexOfObject:inRange: 在Jims ) 不会很好地满足大型数组。  这些支票中运行O( n ) 时间。 也就是说, 如果你连原来大小的数组然后 每个检查 将会需要花费两倍长的运行。  由于你所做的数组中的每个对象的检查, 系统也会在运行多的检查。 更昂贵 我的整体算法( 包括Jims ) 运行在O( n  2 ) 时间, 其获取昂贵的快速地增长和原始数组。 要把它缩小到O( n ) 时间, 你可以使用 NSMutableSet 已经添加到新的数组来存储一个记录的项目.因为O( NSSet查找一是而不是O(n).  换句话说,检查是否一个元素是一个NSSet都采用同样的时间, 无论设置多少个元素。

注意事项

具体需要选用哪种方法,可根据自己的项目具体需要来选择

推荐信息