场景:应用于数据的合并,具体例子如联系人的分组,在设置多个分组的时候存在新建和删除部分分组,我们就要把新建的部分分组和删除的部分分组找出来。
具体例子如下:
-(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]);
}
运行结果:
未完待续