取两个数组的交集与并集

今日某位朋友考我一个问题 如何取两个字符串数组的交集与并集。
立刻查询了下文档
发现Cocoa有一个集合类NSSet专门用于处理集合的问题
故,如要取两数组的交集和并集一般来说不用直接用NSArray。而应采用NSMutableSet集合
NSMutableSet类中有私有方法
- (void)intersectSet:(NSSet *)otherSet
和
- (void)unionSet:(NSSet *)otherSet
分别用来取两个集合的交集与并集。
例:

NSArray *a = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];
NSArray *b = [NSArray arrayWithObjects:@"4", @"5", @"6", @"7", nil];

NSMutableSet *setA = [NSMutableSet setWithArray:a];
NSSet *setB = [NSSet setWithArray:b];
[setA intersectSet:setB];
NSLog(@"c: %@", [setA allObjects]);
NSLog output:
c: (
    4,
    5
)

若:

[setA unionSet:setB];
NSLog(@"d: %@", [setA allObjects]);
NSLog output:
d: (
    6,
    4,
    7,
    5
)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*