NSArray *array = @[@"1",@"2",@"7",@"9",@"8",@"7",@"8",@"3",@"2",@"4",@"2",@"1",@"5",@"6",@"5"];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSString *value in array) {
[dict setValue:value forKey:value];
}
NSLog(@"result===%@",[dict allKeys]);
打印结果
result===(7,3,8,4,9,5,1,6,2
)
将数组的元素存入一个字典,利用利用AllKeys或者AllValues取得字典的所有键或值,但是结果是无序的
NSArray *array = @[@"1",@"2",@"7",@"9",@"8",@"7",@"8",@"3",@"2",@"4",@"2",@"1",@"5",@"6",@"5"];
NSMutableArray *resultArray = [NSMutableArray array];
for (NSString *value in array) {
if (![resultArray containsObject:value]) {
[resultArray addObject:value];
}
}
NSLog(@"resultArray===%@",resultArray);
运行结果
resultArray===(1,2,7,9,8,3,4,5,6)
NSSet的特性:确定性、无序性、互异性
这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
NSArray *array = @[@"1",@"2",@"7",@"9",@"8",@"7",@"8",@"3",@"2",@"4",@"2",@"1",@"5",@"6",@"5"];
NSSet *set = [NSSet setWithArray:array];
NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
NSArray *setArray = [set sortedArrayUsingDescriptors:sortDesc];
NSLog(@"setArray===%@",setArray);
运行结果
setArray===(1,2,3,4,5,6,7,8,9)
NSSet和NSArray的区别
NSSet
NSArray
NSArray *array = @[@"1",@"2",@"7",@"9",@"8",@"7",@"8",@"3",@"2",@"4",@"2",@"1",@"5",@"6",@"5"];
NSArray *result = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
NSLog(@"result===%@",result);
打印结果
2019-09-07 23:34:13.769169+0800 ZSLoadDemo[60246:276864] result===(2,3,4,5,6,7,8,1,9
)
valueForKeyPath是私有API,并且新生成的数组 是无序的