NSSet-不重复内容的物件
NSArry保存的内容是依照顺序来保存,然而NSDictionay不依照顺序的保存所有值(Values)与键(Keys)的内容,然而NSSet保存过程中是以值为依据,不重方式覆保存内容,一旦已经有相同值时就不再保存其值(类似Java的Set),下面使用例子来了解一下NSSet:
//-----------start----------- NSSet* numbersSet = [NSSet setWithObjects:@"One",@"Two",@"Three",@"Four",@"Four",@"Four",nil]; NSLog( @"numbersSet: %@", numbersSet ); //------------end------------
输出结果:
2014-09-16 23:26:37.464 NSSetTest1[7546:303] numbersSet: {( One, Three, Four, Two )}
输出结果能了解到,其保存值不照顺序,但值重复时只保存一组。
增加物件
增加新的物件至NSSet需要使用method setByAddingObject
,但因为是不可变物件的关系,新增结果会再建立一个新的NSSet物件:
//-----------start----------- NSSet* moreSets = [numbersSet setByAddingObject:@"Five"]; NSLog( @"moreSets: %@", moreSets ); //------------end------------
输出结果:
2014-09-16 23:26:37.466 NSSetTest1[7546:303] moreSets: {( Five, One, Three, Four, Two )}
判断NSSet物件内容是否被包含
两个NSSet物件我们能使用method isSubsetOfSet
来判断所指定比对的NSSet内容是否与被包含期中:
//-----------start----------- NSSet* numbersSet = [NSSet setWithObjects:@"One",@"Two",@"Three",@"Four",@"Four",@"Four",nil]; NSLog( @"numbersSet: %@", numbersSet ); NSSet* numbersSet1 = [NSSet setWithObjects:@"One",@"Two",@"Three",@"Four1",nil]; NSLog( @"numbersSet1: %@", numbersSet1 ); NSSet* moreSets = [numbersSet setByAddingObject:@"Five"]; NSLog( @"moreSets: %@", moreSets ); if ([numbersSet isSubsetOfSet:moreSets]) NSLog( @"moreSets is a superset of numbersSet" ); else NSLog( @"moreSets is not a superset of numbersSet" ); if ([numbersSet1 isSubsetOfSet:moreSets]) NSLog( @"moreSets is a superset of numbersSet1" ); else NSLog( @"moreSets is not a superset of numbersSet1" ); //------------end------------
输出结果:
2014-09-16 23:41:48.064 NSSetTest1[7794:303] numbersSet: {( One, Three, Four, Two )} 2014-09-16 23:41:48.066 NSSetTest1[7794:303] numbersSet1: {( One, Three, Four1, Two )} 2014-09-16 23:41:48.066 NSSetTest1[7794:303] moreSets: {( Five, One, Three, Four, Two )} 2014-09-16 23:41:48.066 NSSetTest1[7794:303] moreSets is a superset of numbersSet 2014-09-16 23:41:48.067 NSSetTest1[7794:303] moreSets is not a superset of numbersSet1
例子中利用moreSets使用method isSubsetOfSet
来查对numbersSet与numbersSet1的内容是不是被包含其中,由输出结果得知,因为numbersSet1中有个值为Four1
与moreSets内容比对后,numbersSet1的内容不全然被包含。