1. 程式人生 > >oc 知識總結四 (NSSet、NSMutableSet)

oc 知識總結四 (NSSet、NSMutableSet)

注:集合是一組單值物件的集合,同一個物件只能儲存一個,且集合中的元素是無序的。

一、NSSet(不可變集合)

1、NSSet的建立 (1)建立一個空集合

 NSSet *set = [NSSetset];

(2)建立單個物件的集合

NSSet *set = [NSSetsetWithObject:@"張三"];

(3)建立多個物件的集合

方式一:使用setWithObjects:

NSSet *set1=[NSSetsetWithObjects:@"hello",@"world",@"haha",nil];

方式二:使用類方法

NSSet *set2=[[NSSetalloc]

initWithObjects:@"wa",@"haha",nil];

2、NSSet的常用方法
3、常用方法示例 (1)程式碼部分

//isEqual是判斷兩個物件是否是同一個物件

//集合存入資料的順序和輸出順序不一定一樣,集合元素是無序的。

//集合是一組單值物件的集合,同一個物件只能儲存一個

// 1、建立一個空集合,此處的set是集合

        NSSet *set=[NSSetset];

// 2、建立單個物件的集合

        NSSet *set0=[NSSetsetWithObject:@"張三"];

// 3、建立多個物件的集合

        //方式一:

        NSSet

*set1=[NSSetsetWithObjects:@"hello",@"world",@"haha",nil];

        //方式二:

        NSSet *set2=[[NSSetalloc]initWithObjects:@"wa",@"haha",nil];

//NSSet常用的方法,無符號型別要用%lu

        NSUInteger count =[set1count];

        NSLog(@"集合1%lu個元素",count);

//以陣列的形式獲取集合中的所有物件

        NSArray *allObjects=[set2allObjects

];

//返回集合中的任意一個物件(隨機取物件)

        id obj1=[set1anyObject];

        NSLog(@"randWord= %@",obj1);

//判斷是否包含某個物件(isContain/isExit)

        BOOL isContain =[set2containsObject:@"wa"];

        NSLog(@"%@",isContain?@"包含":@"不包含");

//判斷兩個集合中的元素是否存在相同元素的物件,兩個集合是否有交集

        BOOL isIntersect=[set2intersectsSet:set1];

NSLog(@"%@",isIntersect?@"存在相同元素的物件":@"不存在相同元素的物件");

//判斷兩個集合中的元素是否完全匹配

        BOOL isEqual=[set2isEqualToSet:set1];

//判斷一個集合是否是另一個集合的子集合,如果set2中所有元素都存在於set1,返回true

        BOOL isSubSet=[set2isSubsetOfSet:set1];

NSLog(@"%@",isSubSet?@"set2set1的子集合":@"set2不是set1的子集合");

//1.向集合中新增一個新元素,返回一個新的集合

        NSSet *newSet=[set1setByAddingObject:@"admin"];

        NSLog(@"%@",newSet);

//2.向集合中新增一個新元素,改變原來的集合,一般不使用

        set1=[set1 setByAddingObject:@"admin"];

         NSLog(@"%@",set1);

//將集合A的所有元素賦值給另一個集合B,返回一個新的集合C,自身是不改變的

        NSSet *newSet1=[set1setByAddingObjectsFromSet:set2];

        NSLog(@"%@",newSet1);

        NSLog(@"%@,%@",set1,set2);

        //遍歷方法1

        for(NSString *objin newSet1){

            NSLog(@"%@",obj);

        }

        //遍歷方法2

        NSArray *newArr=[newSet1allObjects];

        for(int i=0;i<newSet1.count;i++){

            NSString *str=[newArrobjectAtIndex:i];

            NSLog(@"%@",str);

        }


(2)輸出結果

2、NSMutableSet(可變集合)

1、簡介:可變集合繼承自NSSet 2、可變集合的建立 (1)建立一個空的集合

NSMutableSet *set=[NSMutableSetset];

(2)建立單個物件的集合

NSMutableSet *set = [NSMutableSetsetWithObject:@"1"];

(3)建立多個物件的集合

NSMutableSet *set1 = [NSMutableSetsetWithObjects:@"1",@"2",@"3" ,nil];

NSMutableSet *set2 = [[NSMutableSetalloc]initWithObjects:@"3",@"2",@"1",nil];

3、常用方法


4、可變集合的交併差 (1)程式碼部分

NSMutableSet *set1=[NSMutableSetset];

        [set1 addObject:@"張三"];

        [set1 addObject:@"李四"];

        [set1 addObject:@"王五"];

        [set1 removeObject:@"王五"];

        [set1 addObject:@"李四"];

NSMutableSet *set2=[NSMutableSetset];

        [set2 addObject:@"張三"];

        [set2 addObject:@"李斯"];

        [set2 addObject:@"王無"];

        //並集

        [set1 unionSet:set2];

        for(NSString *namein set1){

            NSLog(@"並集:%@",name);

        }

        //交集

        [set1 intersectSet:set2];

        for(NSString *namein set1){

            NSLog(@"交集:%@",name);

       }

//差集(A中存在而不存在B中的物件)

        [set1 minusSet:set2];

        for(NSString *namein set1){

                NSLog(@"差集:%@",name);

        }


(2)輸出結果 1>並集的結果:
2>交集的結果
3>差集的結果

相關推薦

oc 知識總結 NSSetNSMutableSet

注:集合是一組單值物件的集合,同一個物件只能儲存一個,且集合中的元素是無序的。 一、NSSet(不可變集合) 1、NSSet的建立 (1)建立一個空集合  NSSet *set = [NSSet

oc 知識總結NSArrayNSMutableArray

注:1、陣列:是一組有序的物件的集合,通過索引下標獲取到陣列中的各個元素。        2、陣列中不可以存放基本資料型別,只能存放物件。如果需要將劇本資料型別放入陣列中,需要通過NSNumber來放入。 一、不可變陣列(NSArray) 1、建立NSArray (1)方法

JAVA基礎知識總結14StringStringBufferStringBuilder

null 多線程操作 部分 單個 進行 單線程 pri lse 行修改 1.String字符串:   java中用String類進行描述。對字符串進行了對象的封裝。這樣的好處是可以對字符串這種常見數據進行方便的操作。對象封裝後,可以定義N多屬性和行為。   如何定義字符串對

每日知識總結計劃javaandroidreact nativeweb框架jscsshtmlajax首頁

作為一名資訊系的學生,現在學的太多,忘得也快,但是實在不忍心辛苦理解的知識就這樣慢慢被自己忘記。 所有這篇帖子作為今天起(2018.10.16  17:32),記錄每天得知識總結首頁。 下面得帖子連結分為一個月為一個單位做記錄,每天的記錄就在當月的一個月的帖子上更新。 20

oc 知識總結NSDate

NSDate:用來處理日期的類 NSDateFormatter:用來處理日期與字元床之間的轉換 1、日期類的常用處理方法 (1) (2)NSLocale代表一個語言、國際環境,比如大陸的簡體中文,就

JAVA基礎知識總結12多線程

必須 對象 存放位置 垃圾 java基礎知識 current syn 原理 運行 進程:正在進行中的程序。其實進程就是一個應用程序運行時的內存分配空間。 線程:其實就是進程中一個程序執行控制單元,一條執行路徑。進程負責的是應用程序的空間的標示。線程負責的是應用程序的執行順序

SQL 使用總結 規範基礎

目錄 寫在之前 命名規範 規格化形式 1、第一規格形式(第一正規化) 2、第二規格形式(第二正規化) 3、第三規格化形式(第三正規化) 4、規格化的優點和缺點 5、去規格化資料庫 從已有表建立新表 完整性約束 1、主鍵約束 2、唯一性約束 3、

oc知識總結三 NSDictionaryNSMutableDictionary

注:字典是由鍵-值對組成的資料集合,他是無序的一組集合,我們通過key查詢對應的value,key通常是字串物件,在字典中,key的值必須是唯一的,而且key不能為空。 字典分為兩種:不可變字典(NSDictionary)和可變字典(NSMutableDctionary)

JAVA總結方法物件與變數

類、方法、物件與變數在這裡記錄的是部分常見的方面,至於其它方面就不多說了。一、類(屬性與方法的載體)這裡主要說的是具體類,抽象類,介面;1.具體類:具體類也是我們最常用到的類,主要有是由以下形式出現:[訪問許可權修飾符]  [修飾符]  class   類名  {   類體

MFC 小知識總結

list 音樂 star tor open details cli wav mage 1 PlaySound 播放WAV格式的音樂 This function plays a sound specified by a file na

編寫高質量代碼:改善Java的151個建議對象方法31-51

jvm 分配 sys fin -- pac 重構 oid 只有一個 31.接口中不要存在實現代碼   接口中不能存在實現代碼(雖然可以實現,但是如果把實現代碼寫在接口中,那麽接口就綁定了可能變化的因素,這就導致實現不在文檔和可靠,是隨時可能被拋棄,被修改,被重構的) pa

總結一下各種居中內聯元素塊級元素浮動元素絕對定位元素*水平垂直

一個 常見 一是 -a flex 樣式 有一個 margin round   在平時寫網頁樣式的時候,元素居中應該是最常見不過的了,在這裏我們把常見居中的情況簡單總結一下。本文討論以下幾種情況:內聯元素、塊級元素、浮動元素、絕對定位元素。居中的情況分兩種情況:水平居中和垂直

第二篇 python基礎知識總結:數據運算符

pre http 賦值 float 異或 mage IT ext inpu   引子 我們跟任何人交流,說的每一句都是都一些文字組成,包含名詞、動詞、語句、標點符號等,組成我們說普通話構成的基本要素。同理我們學習python語言也要明白這些基本要素,也就是我們常說的

JAVA基礎知識總結18反射

java基礎 null exce 既然 nsa 操作 程序 san 包含 反射技術:   其實就是動態加載一個指定的類,並獲取該類中的所有的內容。而且將字節碼文件封裝成對象,並將字節碼文件中的內容都封裝成對象,這樣便於操作這些成員。簡單說:反射技術可以對一個類進行解剖。

一文讀懂推薦系統知識體系-上概念結構演算法

  本文主要闡述: 推薦系統的3個W 推薦系統的結構 推薦引擎演算法 瀏覽後四章的內容請見下篇。 1. 推薦系統的3個W 1.1 是什麼(What is it?) 推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去

深度學習 Keras利用CNN實現圖片識別MnistCifar10

視覺集        視覺資料庫是用來提供給圖片識別領域用素材,目前各個教材常用的主要有手寫數字識別庫、10中小圖片分類庫,詳細介紹如下: Mnist       &

SQL 使用總結關於索引

目錄 介紹 索引的型別 何時考慮使用索引 何時應該避免使用索引 刪除索引 SQL SERVER中的索引 1、簡述 2、說明 3、例子   介紹 簡單來說,索引就是指標,指向表裡的資料。資料庫裡的索引和圖書中的索引十分類似。當資料庫沒有

python小總結3異常單例設計模式

一、異常 AttributeError:試圖訪問一個物件沒有的成員【屬性和方法】 ValueError:值錯誤,傳入了一個不期望的值 ImportError:無法匯入模組或者包:基本上路徑問題 IndexError:訪問了不在範圍內的索引 KeyError:試圖訪問字典中不存在的鍵 NameErr

【JavaScript高階】2基礎總結深入資料變數記憶體

一、資料—變數—記憶體 1. 什麼是資料?   * 儲存在記憶體中代表特定資訊的'東西', 本質上是0101...   * 資料的特點: 可傳遞, 可運算   * 一切皆資料   * 記憶體中所有操作的目標: 資料     *

python3.X 爬蟲針對拉鉤,直聘,大街等招聘網站的簡歷爬蟲遇到的ip代理的總結 pycharm執行,程式碼篇

這裡面主要講解的是兩個大方向的程式碼: 一個是selenium+chrome中的ip代理: from selenium import webdriver chromeOptions = webdriver.ChromeOptions() # 設定代理 chromeO