IOS開發中集合操作 處理數據的 交集 並集 差集


場景:在日常開發中我們經常會遇到 網絡數據  和本地數據  排重等 求取兩個集合數據的交集 並集 差集的情況。

1.一般簡單處理:比較好理解的邏輯寫法,大家一般會通過 數組遍歷嵌套for循環加if條件判讀進行數據逐條篩選,然后得到一個完整的最后的 處理完(交集,並集,差集)后的數組,進行后續操作。

2.減少代碼行數的處理方式:轉發http://www.cnblogs.com/GJ-ios/p/6277303.html)

iOS 數組集合操作(交集,並集,差集,子集)

 

1、求數組的 交集,並集,差集

1
2
3
4
5
6
7
8
NSArray  *array1 = @[@ "1" ,@ "2" ,@ "3" ];
NSArray  *array2 = @[@ "1" ,@ "5" ,@ "6" ]; 
NSMutableSet  *set1 = [ NSMutableSet  setWithArray:array1];
NSMutableSet  *set2 = [ NSMutableSet  setWithArray:array2]; 
 
[set1 unionSet:set2];        //取並集后 set1中為1,2,3,5,6
[set1 intersectSet:set2];   //取交集后 set1中為1
[set1 minusSet:set2];       //取差集后 set1中為2,3,5,6

2、判斷一個數組是否為另一個數組的子集

1
2
3
4
5
6
NSArray  *array3 = @[@ "1" ,@ "2" ];
NSArray  *array4 = @[@ "1" ,@ "2" ,@ "6" ];
NSSet  *set3 = [ NSSet  setWithArray:array3];
NSSet  *set4 = [ NSSet  setWithArray:array4];
 
BOOL  isSub = [set3 isSubsetOfSet:set4];      //isSub為YES

3、判斷某個對象是否在某個數組中

1
BOOL  isExist = [array3 containsObject:@ "1" ];  //isExist為YES

 

4、補充說明:

以下三種集合類是不可變的(一旦初始化后,就不能改變)

NSArray 用於對象有序集合(數組)
NSSet 用於對象無序集合 (集合)
NSDictionary用於鍵值映射(字典)

以下三種是可變集合類(這三種可變集合類是對應上面三種集合類的子類):

NSMutableArray
NSMutableSet 可修改的集合。主要用於集合運算(並集,交集,差集)
NSMutableDictionary 允許用戶添加和刪除key和value

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM