2013-07-18 3 views
-1

배열의 긴 숫자 목록을 objective-C에서 동일한 수의 더 작은 배열로 그룹화하는 효율적인 방법은 무엇입니까? 또는 이에 대한 표준 라이브러리가있는 경우Objective-C 배열의 긴 숫자 목록에서 동일한 숫자 그룹화

+0

당신이 예를 보여줄 수 : 여기

은 예입니다? 무엇을 성취하려고합니까? 존재할 수있는 매우 효율적인 구조가 여러 개 있지만 도움이 될 수는 있지만 추가 정보없이 필요한 것을 이해하는 것은 어렵습니다. – dasblinkenlight

+0

[1,3,4,6,8,9,5,43,3,44,23,4,4,9,5,3,1,9] ~ [1,1] [3,3,3 ] [4,4,4] [6] [8] [9,9,9] [5,5] [43] [44] [23] 내 실제 목록은 단지 숫자가 아니며, 각 숫자는 다른 목록을 나타냅니다. – shebelaw

답변

1

코코아는 반복적 인 개체 집합을 처리하기 위해 특별히 만들어진 NSCountedSet이라는 매우 멋진 데이터 구조를 가지고 있습니다. 개체 시퀀스 (숫자 등)를 추가하면 구조는 각 개체가 추가 된 횟수를 기억합니다. 이

1, 3, 5, 2, 4, 2, 5, 6, 2, 4, 3 

과 같은 순서로 시작하고 계산 세트에이 번호를 추가하는 경우

예를 들어, 같은 것 구조는 다음과 같습니다

N - Count 
- - ----- 
1 - 1 
2 - 3 
3 - 2 
4 - 2 
5 - 2 
6 - 1 

를 세트로 배열의 배열을 구성하거나 간단하게보다 효율적인 표현으로 coutnted 세트를 유지할 수 있습니다.

NSArray *data = @[@1, @3, @5, @2, @4, @2, @5, @6, @2, @4, @3]; 
NSCountedSet *cs = [[NSCountedSet alloc] initWithArray:data]; 
NSEnumerator *enumerator = [cs objectEnumerator]; 
NSNumber *value; 
while ((value = [enumerator nextObject])) { 
    NSLog(@"%@ - %d", value, [cs countForObject:value]); 
}