Objective-C セット
セットは配列と同じ感じだが、和集合、積集合、差集合が使用できる。
目次
セットの作成
セットはNSSetクラスのsetWithArrayメソッドを使用し配列から作成できる。
// 配列の作成 NSArray *arr1 = @[@"item1", @"item2", @"item3"]; NSArray *arr2 = @[@"item3", @"item4", @"item5"]; // セットの作成 NSSet *set1 = [NSSet setWithArray: arr1]; NSSet *set2 = [NSSet setWithArray: arr2];
和集合
unionSetメソッドを使い複数のセットにある要素をすべて含んだセットを作成する。作成するセットは要素数が変化するのでNSMutableSetクラスでセットを作成します。
// 配列の作成 NSArray *arr1 = @[@"item1", @"item2", @"item3"]; NSArray *arr2 = @[@"item3", @"item4", @"item5"]; // セットの作成 NSSet *set1 = [NSSet setWithArray: arr1]; NSSet *set2 = [NSSet setWithArray: arr2]; // 和集合 NSMutableSet *mtset = [NSMutableSet setWithCapacity:1]; [mtset unionSet: set1]; [mtset unionSet: set2]; // mtsetの中身はitem3,item2,item5,item1,item4
積集合
intersectSetメソッドを使い複数のセットで共通している要素をだけのセットを作成する。
NSArray *arr1 = @[@"item1", @"item2", @"item3"]; NSArray *arr2 = @[@"item3", @"item4", @"item5"]; // セットの作成 NSSet *set1 = [NSSet setWithArray: arr1]; NSSet *set2 = [NSSet setWithArray: arr2]; // 元になるセットを作成 NSMutableSet *mtset = [NSMutableSet setWithArray: arr1]; // 積集合 [mtset intersectSet: set2]; // mtsetの中身はitem3
差集合
minusSetメソッドを使い元のセットから指定されたセットに含まれている要素を除いたセットを作成する。
NSArray *arr1 = @[@"item1", @"item2", @"item3"]; NSArray *arr2 = @[@"item3", @"item4", @"item5"]; // セットの作成 NSSet *set1 = [NSSet setWithArray: arr1]; NSSet *set2 = [NSSet setWithArray: arr2]; // 元になるセットを作成 NSMutableSet *mtset = [NSMutableSet setWithArray: arr1]; // 差集合 [mtset minusSet: set2]; // mtsetの中身はitem2,item1
phpの配列でいうところのunionとかarray_intersectとかarray_diffかな。