最好的辦法去掉重複NSMutableArray中的值?

Tags: 辦法, 對象,

我們在好多時候嚐嚐會再NSMutableArray裡邊添加進去一些重複的對象,但是要顯示的時候如果直接顯現的話,就會有一些重複的對象顯示出來,這樣會給用戶造成不好的體驗。當然了,我們一般也不會允許這樣的事情出現。所以這時,我們就應當去除NSMutableArray裡邊的重複的對象再顯示。在這裡我們簡單介紹幾種去除重複值的方法

工具/原料

Xcode

Mac

方法/步驟

如果不擔心排序的問題,又想要節省你的代碼量的話,我們在這兒可以用一句代碼就解決這個問題。其中yourarray就是帶有重複值的NSMutableArray,uniquearray就是去除重複值得到的Array

最好的辦法去掉重複NSMutableArray中的值

如果你不擔心的對象的順序.不過又一次如果你不擔心我的順序.然後你為什麼不將它們存儲在你的 NSSet ?

添加 NSOrderedSet 到iOS 5和Mac系統X 10.7. 這也是比較常用的。

最好的辦法去掉重複NSMutableArray中的值

如果擔心以上正在運行的順序和iOS 4或者更低版本。這是,我們就需要來循環一個數組了,其實方法和原理都差不多。這個方法會比較費時,但是更能讓人一目瞭然。那就是循環一個數組的副本。

最好的辦法去掉重複NSMutableArray中的值

這是比較簡潔的方法,也是一個比較老得方法。

來刪除重複項的 NSArray . 如果我們使用 Object Operators從key Coding 我們可以這樣做。

最好的辦法去掉重複NSMutableArray中的值

在任意case , 檢查要查看一個項目是否已包含在目標數組( 使用 containsObject: 在我的例子中, 或 indexOfObject:inRange: 在Jims ) 不會很好地滿足大型數組。 這些支票中運行O( n ) 時間。 也就是說, 如果你連原來大小的數組然後 每個檢查 將會需要花費兩倍長的運行。 由於你所做的數組中的每個對象的檢查, 系統也會在運行多的檢查。 更昂貴 我的整體算法( 包括Jims ) 運行在O( n 2 ) 時間, 其獲取昂貴的快速地增長和原始數組。

要把它縮小到O( n ) 時間, 你可以使用 NSMutableSet 已經添加到新的數組來存儲一個記錄的項目.因為O( NSSet查找一是而不是O(n). 換句話說,檢查是否一個元素是一個NSSet都採用同樣的時間, 無論設置多少個元素。

最好的辦法去掉重複NSMutableArray中的值

注意事項

具體需要選用哪種方法,可根據自己的項目具體需要來選擇

相關問題答案