libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

辞書と集合のクラス (6/7)

作成:2011-02-18 10:11
更新:2011-11-13 21:02

■集合演算を行うには?

NSSetが「集合のクラスである」ということは、すなわち、集合に特有の「集合演算」も行えなければいけません。NSSet自体はデータの操作が行えませんが、NSMutableSetには、ちゃんとそのためのメソッドが用意されています。

集合演算というのは、2つの異なる集合から演算して新しい集合を取り出すためのものです。これは整理すれば「2つの集合を合わせる、和集合A = A ∪ B)」、「ある集合から別の集合のメンバーを取り除く、補集合A = A \ B)」、「2つの集合に共通のものだけを取り出す、積集合A = A ∩ B)」といったものになります。これらのメソッドを以下に整理しておきましょう。

◯NSSetを追加する(和集合)
[《NSMutableSet*》unionSet:《NSSet*》];

◯NSSetのオブジェクトを取り除く(補集合)
[《NSMutableSet*》minusSet:《NSSet*》];

◯NSSetに含まれているオブジェクトだけにする(積集合)
[《NSMutableSet*》intersectSet:《NSSet*》];

まあ、あんまりこういう演算は、一般人には馴染みがないかも知れませんね。とりあえず「そういう機能がある」ぐらい知っていれば十分でしょう。必要なら後で勉強すればいいんですから。

では、下に簡単な演算例をあげておきましょう。2つのNSMutableSetを用意し、両方に共通するものだけに集合を絞って出力しています。ここでは、setインスタンスの中身は、intersectSet:により@"tuyano"@"hanako"の2つだけに変わります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
	@autoreleasepool {
        NSMutableSet* set = [NSMutableSet setWithObjects:
                             @"tuyano",@"taro",@"hanako",@"buhi",nil];
        NSMutableSet* set2 = [NSMutableSet setWithObjects:
                              @"tuyano",@"ihiro",@"hanako",@"hoge",nil];
        
        [set intersectSet:set2];
        NSLog(@"%@",set);
    }
	return 0;
}
※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る