-1

我输入如下所示的两个数组

NSArray *array1=[[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];

NSArray *array2=[[NSArray alloc]initWithObjects:@"1",@"2",@"1", nil];

输出应该像这样。同一个元素应该只取消一次。

NSArray *array3=[[NSArray alloc]initWithObjects:@"1",@"2", nil];

提前致谢.....

4

5 回答 5

1
NSArray *array1 = @[@"1",@"2",@"3"];

NSArray *array2 = @[@"1",@"2",@"1"];

NSMutableSet *allElemets = [NSSet setWithArray:array1];
[allElemets addObjectsFromArray:array2];

这将返回所有没有重复的元素。在这种情况下,它将是

@"1",@"2",@"3"

编辑:

这将返回数组的交集

NSMutableSet *set1 = [NSMutableSet setWithArray:array1];
NSSet *set2 = [NSSet setWithArray:array2];
[set1 intersectSet:set2];
于 2012-10-25T06:39:16.737 回答
0

代码在这里

编辑:这将删除重复值添加唯一值。

NSArray *array1=[[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];

NSArray *array2=[[NSArray alloc]initWithObjects:@"1",@"2",@"1", nil];

//Here Create nEw  Array with Arra1 
NSMutableArray * newArray =[[NSMutableArray alloc] initWithArray:array1];
for(int index=0; index<[array2 count];index++)
{
    id object =[array2 objectAtIndex:index];
    if(![newArray containsObject:object])//this methods Returns YES/NO 
    {
        [newArray addObject: object];

    }

}
于 2012-10-25T09:17:14.207 回答
0

如果你对集合而不是数组很好,你可以使用 NSMutableSet 而不是 NSArray。NSMutableSet 有很好的方法,比如 intersectSet: 和 minusSet:

于 2012-10-25T06:36:57.450 回答
0
if([[array1 objectAtIndex:i] isEqualToString:[array2 objectAtIndex:i]])
{

            [array2 removeObjectAtIndex: i];                
            NSLog(@"same element removed.");

}

array3 = [firstArray arrayByAddingObjectsFromArray:secondArray];

或者

NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set addObjectsFromArray:array2];

array3 = [set allObjects];

比较两个数组并删除重复值,您将获得您的值。

于 2012-10-25T06:52:29.657 回答
0

用于NSCountedSet上述情况

 NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"r",@"a",@"r",@"r",@"r", nil]; 

    NSArray *array2=[[NSArray alloc]initWithObjects:@"b",@"c",@"r", nil];


    NSMutableSet *setOne = [NSMutableSet setWithArray: array1];
    NSSet *setTwo = [NSSet setWithArray: array2];

    [setOne unionSet:setTwo];

    NSArray *arrayOneResult = [setOne allObjects];

    NSLog(@"%@",arrayOneResult);

    NSMutableArray *resultArray = [[NSMutableArray alloc]init];

    NSCountedSet *set = [[NSCountedSet alloc] initWithArray:arrayOneResult];

    for (id item in set)
    {

        NSCountedSet *set1 = [[NSCountedSet alloc] initWithArray:array1];
        NSCountedSet *set2 = [[NSCountedSet alloc]initWithArray:array2];

        int diff = abs([set1 countForObject:item] - [set2 countForObject:item]);

        for (int  i = 0 ;i < diff ;i++ ) {
            [resultArray addObject:item];
        }


    }

    NSLog(@"the array : %@",resultArray   ); 
于 2012-10-25T06:55:55.903 回答