如何为 Objective C 中的多个集合执行并集

How to perform union set for multiple sets in Objective C

我有一个 NSSet 实例数组,如下面的代码所述。

NSArray *a = @[@"1", @"2", @"3", @"4", @"5"];
NSArray *b = @[@"1", @"2", @"3", @"6", @"7"];
NSArray *c = @[@"1", @"7", @"8", @"9", @"5"];
NSArray *d = @[@"1", @"6", @"7", @"8", @"9"]; ... upto N number of arrays.

这些所有 N 个数组都是在 NSSet 的 N 个实例中定义的,方法是使用 [NSSet setWithArray:] 方法从数组创建集合。集合的所有 N 个实例都存储在一个数组 X 中。现在,我需要对所有 N 个集合执行并集操作。我怎样才能做到这一点?

有多种方法可以做到这一点。最简单的方法是迭代数组(集合)并将新元素添加到集合中。

NSMutableSet *unionSet = [NSMutableSet new];
for( NSSet *singleSet in X) // X is an array of sets as mentioned in the Q
{
  [unionSet unionSet:singleSet];
}

但是,在统一它之前不需要创建单个中间集,因为您也可以使用 -addObjectsFromArray: (NSMutableSet) 将数组本身添加到 unionSet。

作为提示,我想在您的示例中提及(这可能与真实单词不同),使用简单的数字可能更容易使用 NSIndexSetNSMutableIndexSet 来自刚开始。