1. 程式人生 > >【iOS開發】陣列的去重(無序和有序)

【iOS開發】陣列的去重(無序和有序)

一、 無序的去重

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 [email protected][@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開發陣列(無序有序)

一、 無序的去重 1.利用NSDictionary的AllKeys(AllValues)方法 可以將NSArray中的元素存入一個字典,然後利用AllKeys或者AllValues取得字典的所有鍵或值,這些鍵或值都是去重的。 程式碼:

iOS開發 常遇到的CrashBug處理

七:pngcrush caught libpng error,Not a PNG file Could not find file While reading /XXX/XXX/XXX/img1.png pngcrush caught libpng error:   Not a PNG filCou

JavaScript 陣列 陣列求差集、交集

去重: 陣列去重得分以下三種情況:數組裡是數字、數組裡是字串、數組裡是物件。前兩種直接使用jquery提供的unique方法就可實現。 一、數字:

前端筆試題陣列

陣列去重 題目來自於自己真實筆試,現在總結到博文,算是給自己的再一次複習吧,另外也可以與大家分享。 最初的實現 我記得我第一次的答案是這樣寫的: for (var i = 0; i < arr1.length; i++) { f

HihoCoder - 1850字母 (字串,思維)

題幹: 給定一個字串S,每次操作你可以將其中任意一個字元修改成其他任意字元。 請你計算最少需要多少次操作,才能使得S中不存在兩個相鄰的相同字元。 Input 只包含小寫字母的字串S。   1 ≤ |S| ≤ 100000 Output 一個整數代表答案

iOS開發iOS移動端架構

引言:一個app的初始階段,必然是先滿足各種業務需求。然後,經過多次版本迭代之後,先前的由於急於滿足需求而導致的雜亂程式碼則會充斥整個專案。而此時,專案有了一定的規模,有了一定數量的開發人員,那麼為了達到快速迭代版本的需求,則是需要有一個強大的架構來支撐。

iOS開發Gitlab教程 (一)

一 、gitLab 建立工程 Project name : 工程名字起一個,最好和專案相關; Namespace : 你自己的gitLab工作空間,預設就好; Description : 描述,隨便寫。 Visibi

iOS開發判斷app啟動的方式(launchOptions)

iOS app啟動的方式有哪些: 自己啟動(使用者手動點選啟動)urlscheme啟動(關於urlScheme的詳解點選開啟連結)本地通知啟動  (自己寫的本地通知啟動,藍芽模組的啟動,地理圍欄的啟動)遠端通知啟動    (後臺伺服器的推送通知)在appdelegate.m

iOS開發SELSelector 原理小結

一 、Selector(選擇器)簡介 選擇器是用來選擇一個方法來為一個物件 執行的名稱,或是在編譯原始碼時替換該名稱的 唯一識別符號的名稱。一個選擇器本身不做任何事情。它簡單地識別了一種方法。唯一使選擇器的方法名稱不同於普通字串,編譯器確保選擇器是獨特的。

iOS開發一些常見的警告解決方案(更新中。。。)

Unknown pattern color for the Background Color attribute 1.背景色屬性為未知模式的顏色 解決:預設xib裡面控制元件的背景色為Default。如果出現警告,可能是你定義的顏色Xcode啟動

MapReduce例項資料

一、例項描述 資料去重是利用並行化思想來對資料進行有意義的篩選。統計大資料集上的資料種類個數、從網站日誌中計算訪問等這些看似龐大的任務都會涉及資料去重。 比如,輸入檔案 file1.txt,其內容如下: 2017-12-9 a 2017-12-10 b

iOS開發UIWebView載入html時不顯示網路圖片解決辦法

NSString *html = @"<html><body><p>怎麼顯示網路圖片 <img src=\"http://p0.ifengimg.com/pmop/2017/1218/F9636BB16CC72EC34B5FCB78

APP內開啟另一個APP(URL Scheme與openURL)iOS開發

目標 平常我們做iOS開發,會經常遇到開啟其他的APP的功能。本篇文章講的就是開啟別人的APP的一些知識。我們的目標是: 開啟別人的APP讓別人開啟我們的APPiOS9的適配問題使用URL Schemes傳遞資料 準備工作 建立一個名為OpenApp的工作空間,用來存放

iOS開發---- tableView背景隨表滾動

        最近專案中用到了“圖隨表動”,如下圖所示:         這是一個訂單,需要add shipping insurance以上的部分隨著表格的滾動而滾動,這裡表格是group型別的,所以背景加在cell上是達不到效果的,在code4App上找到了一個例子(

iOS開發---- 語音識別

        最近iOS專案中需要用到語音識別技術(也被稱為自動語音識別,英語:Automatic Speech Recognition, ASR)。去google搜尋了一下,發現語音識別做的不錯的

IOS 開發Object

.一. 類定義類定義需要實現兩部分 : -- 介面部分 : 定義類的成員變數和方法, 方法是抽象的, 在標頭檔案中定義;-- 實現部分 : 引入介面部分的標頭檔案, 實現抽象方法;1. 介面部分定義 (

iOS開發UIView(包括子類)的幾個初始化方法

-(id)initWithFrame:(CGRect)frame UIView的指定初始化方法; 總是傳送給UIView去初始化, 除非是從一個nib檔案中載入的; -(id

iOS開發NSThread

 atomic    原子屬性,是預設屬性     * 是在多執行緒開發時,保證多個執行緒在"寫入"的時候,能夠保證只有一條執行緒執行寫入操作!     * 是一個單(執行緒)寫多(執行緒)讀的多執行緒技術     * 原子屬性,解決不了賣票問題,因為賣票的讀寫都需要鎖定

iOS開發launch Images啟動圖片設定(UILaunchImageFile)之002

一、實現效果: 通過直接給圖片起預設的名字,讓app啟動頁自動載入啟動圖片。 二、注意點: ·圖片命名一定要按蘋果官方的指定規則命名,圖片的畫素也要符合規則; ·如果橫豎屏圖片都需要,記得在Xcode中勾選上專案支援橫豎屏。 三、官方描述:

iOS 開發將自己的框架打包成 Framework 的方法

建立 Framework 工程1. 建立打包工程開啟 Xcode 新建一個工程,選擇 Framework & Libray 選項中的 Cocoa Touch Framework ,這裡說一下我的 Xcode 版本是 8.3.2 。建立工程因為要打包所需的檔案,所以這裡我自己建立了一個測試類,在實際的打