我想比较2 NSMutableArray
并获得不同的对象到第三Array
。我怎样才能做到这一点 ?比较2 nsmutablearray并获得不同的对象到第三个数组在ios
Array1可以循环对象。
Array1 = "a", "b","c","d","a","b","c";
Array2 = "a", "b", "c";
然后导致
Array3 = "d";
在此先感谢
我想比较2 NSMutableArray
并获得不同的对象到第三Array
。我怎样才能做到这一点 ?比较2 nsmutablearray并获得不同的对象到第三个数组在ios
Array1可以循环对象。
Array1 = "a", "b","c","d","a","b","c";
Array2 = "a", "b", "c";
然后导致
Array3 = "d";
在此先感谢
使用套组操作:
NSSet *set1 = [NSSet setWithArray:array1];
NSMutableSet *set2 = [NSMutableSet setWithArray:array2];
[set2 minusSet:set1];
+1 @NGOT使用NSSet是有效的。 –
我试着上面的代码,但在控制台set2总是= 0 – NGOT
@NGOT,你是否使用真正的字符串文字作为在问题或自定义类的一些对象? – vikingosegundo
NSMutableArray *gotDiffArry= [[NSMutableArray alloc] init];
for(int i = 0 ; i < FirstArray.count; i++) {
if(i < seconArray.count){
if(![seconArray[i] isEqual:firstArray[i]]){
[gotDiffArry addObject:[NSNumber numberWithInt:i]];
}
} else {
[gotDiffArry addObject:[NSNumber numberWithInt:i]];
}
}
编辑:
for (int i = 0 ; i < firstArray.count ; i ++)
{
NSString *search = [firstArray objectAtIndex:i];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF CONTAINS %@", search];
NSMutableArray *temAraay = [secondArray filteredArrayUsingPredicate: predicate];
if(temArray.count >=0)
{
NSLog("%@", [temArray objectAtIndex:0]);
}
}
你也可以试试这个。
NSMutableArray *array1 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"1", nil];
NSMutableArray *array2 = [[NSMutableArray alloc]initWithObjects:@"2",@"1", nil];
NSMutableArray *largeArray;
NSMutableArray *shortArray;
if([array1 count] > [array2 count]){
largeArray = array1;
shortArray = array2;
} else {
largeArray = array2;
shortArray = array1;
}
[largeArray removeObjectsInArray:shortArray];
for (NSString *va in largeArray) {
NSLog(@"%@",va);
}
你可以确定哪一个很大,哪一个很短? – 2013-07-12 09:38:37
@RanjuPatel像你有你想检查重复数组(重复也在数组中)的数组。 – Buntylm
我已经使用以下,得到了期望的结果:
for(int i =0; i<[arraytwo count]; i++)
{
if (![arrayone containsObject:[arraytwo objectAtIndex:i]])
[arraythree addObject: [arraytwo obectAtIndex:i]];
}
NSLog(@"%@",arraythree);
可能比设置的方法更有效(对于较小的阵列,至少)。 –
我也用它来做更大的阵列。它可能需要一些时间来更大阵列,但我在后台做这件事情,所以工作正常。 – 2013-07-12 13:05:40
是的,这只是我对各种计划没有经过“大O”估计。可能这套方法对于大型套装来说效率更高,但您可能必须处于成千上万的元素中才能发挥重要作用。 –
应该ARRAY3只是'[ “d”]',还是应'[ “B”, “d”] ',你的问题不清楚'diff object'是什么意思? – Wain
对象是否是字符串?此外,你是否在寻找相等(值相同)或标识(array1中的哪些对象占用与array2中的对象相同的内存)? – Maarten
@Wain:我编辑了我的问题 – NGOT