我有一个NSMutableArray,其中包含重复的值,例如[1,2,3,1,1,6]。 我想删除重复的值,并希望得到新的只包含不同值的数组。
我有一个NSMutableArray,其中包含重复的值,例如[1,2,3,1,1,6]。 我想删除重复的值,并希望得到新的只包含不同值的数组。
两行简介
NSMutableArray *uniqueArray = [NSMutableArray array];
[uniqueArray addObjectsFromArray:[[NSSet setWithArray:duplicateArray] allObjects]];
NSOrderedSet
。 - Cœur我的解决方案:
array1=[NSMutableArray arrayWithObjects:@"1",@"2",@"2",@"3",@"3",@"3",@"2",@"5",@"6",@"6",nil];
array2=[[NSMutableArray alloc]init];
for (id obj in array1)
{
if (![array2 containsObject:obj])
{
[array2 addObject: obj];
}
}
NSLog(@"new array is %@",array2);
我在NSArray上创建了一个包含该方法的类别:
- (NSArray *)arrayWithUniqueObjects {
NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[self count]];
for (id item in self)
if (NO == [newArray containsObject:item])
[newArray addObject:item];
return [NSArray arrayWithArray:newArray];
}
然而,这是一种暴力的方法,效率并不高,可能有更好的方法。
如果您不担心对象的顺序,NSSet方法是最好的选择。
uniquearray = [[NSSet setWithArray:yourarray] allObjects];
// iOS 5.0 and later
NSArray * newArray = [[NSOrderedSet orderedSetWithArray:oldArray] array];
NSSet *set = [NSSet setWithArray:myArray];
它将只包含唯一对象:
如果数组中出现相同的对象超过一次,则仅将其添加一次到返回的集合中。