[10일차]Set 클래스 Objective-C2010. 5. 19. 19:10
- 모든 멤버가 순서에 상관없이 저장되고 중복된 데이터는 삽입되지 않는 컬렉션
종류
NSSet
NSMutableSet // NSSet을 상속
NSCountedSet // NSMutableSet을 상속
: 인스턴스와 저장된 개수를 가지고 있는 Set (참조회수 조회시 유용)
1. NSSet 클래스
메서드
+(id)set
// 요소가 포함되지 않는 임시 인스턴스 생성
+(id)setWithObjects:obj1,obj2... ,nil // 중복데이터 배제
// 오브젝트 들을 이용해서 set을 생성
-(id)setWithObjects:obj1,obj2... ,nil // 중복데이터 배제
// 오브젝트 들을 이용해서 set을 초기화
-(id)initWithArray:(NSArray*)array // 중복데이터 배제
-(NSArray *)allObjects; //
-(NSUInteger)count; // 개수를 리턴
-(NSEnumberator *)objectEnumerator; //
--------------------------------------------------------------------------------
#import <foundation/NSSet.h>
#import <foundation/NSString.h>
#import <foundation/NSEnumerator.h>
int main(int argc, const char * argv[])
{
NSEnumerator * it;
NSString * element;
NSSet * setString = [NSSet setWithObjects:@"One",@"Two",@"Three",@"One",nil];
NSLog(@"setString: ");
it = [setString objectEnumerator];
while((element=[it nextObject])!=nil)
NSLog(@"%@",element);
NSArray * ar = [NSArray arrayWithObjects:@"One",@"Two",@"Three",@"One",nil];
setString = [setString initWithArray:ar];
NSLog(@"ar: ");
it = [ar objectEnumerator];
while((element = [it nextObject])!=nil)
NSLog(@"%@",element);
NSLog(@"setString: ");
it = [setString objectEnumerator];
while((element =[it nextObject])!=nil)
NSLog(@"%@",element);
system("pause");
return 0;
}
--------------------------------------------------------------------------------
2) 멤버의 포함여부와 동일성 여부
-(BOOL)containsObject : obj
-(BOOL)isSubsetOfSet : nsset => nsset에 모든 멤버가 있으면 YES
-(BOOL)intersectsSet : nsset => 공통요소가 있으면 YES
-(BOOL)isEqualToSet : nsset => 동일한 경우
2. NSMutableSet : 변경가능한 SET
-(id)setWithCapacity:size =>size 만큼 저장할 수 있는 초기 용량으로 새로 생성
-(id)initWithCapacity:size
-(void)addObject:obj
-(void)removeObject:obj
-(void)unionSet:nsset
-(void)minusSet:nsset
-(void)intersectSet:nsset =>공통되지 않은 요소를 제거
3. NSCountSet
- 중복된 데이터의 경우 count 값을 증가시키는 set
- obj가 추가된 개수 리턴