場景:應用於數據的合併,具體例子如聯繫人的分組,在設置多個分組的時候存在新建和刪除部分分組,我們就要把新建的部分分組和刪除的部分分組找出來。
具體例子如下:
-(void) doFindSameObjectFromArrays
{
NSMutableArray *array1 =[NSMutableArray new];//假設array1爲一個聯繫人的分組groupIds
NSMutableArray *array2 =[NSMutableArray new];//假設array1爲一個聯繫人修改後的分組groupIds
for (int i =1; i<6; i++)
{
if (i%3==0)
{
[array1 addObject:[NSString stringWithFormat:@"%d",i]];
}
if (i%2==0)
{
[array1 addObject:[NSString stringWithFormat:@"%d",i]];
}
else
{
[array2 addObject:[NSString stringWithFormat:@"%d",i]];
}
}
NSLog(@"聯繫人的分組:%@",array1);
NSLog(@"聯繫人修改後的分組:%@",array2);
//使用集合把相同的元素找出來
NSMutableSet *set1=[NSMutableSet setWithArray:array1];
NSMutableSet *set2 =[NSMutableSet setWithArray:array2];
//提取數組共同的元素
[set1 intersectSet:set2] ;//交集
NSLog(@"set1:%@",[set1 allObjects]);
//提取數組除共有元素以外的元素
[array1 removeObjectsInArray:[set1 allObjects]]; //找出被刪除的分組id
[array2 removeObjectsInArray:[set1 allObjects]]; //找出新建的分組id
NSLog(@"刪除的分組:%@",array1);
NSLog(@"新建的分組:%@",array2);
//合併兩個數組,過濾掉相同的元素。
[set1 addObject:@"7"];//set1在上面被重新賦值了,所以添加一個元素以便於區分
[set1 unionSet:set2];//合併
NSLog(@"合併數據:%@",[set1 allObjects]);
}
運行結果:
未完待續