요소가 저장된 방식으로 사전에 액세스하려고합니다. 아무도 내가이 일을하도록 도울 수는 없었다. 미리 감사드립니다 !!사전에 순차적으로 액세스하는 방법은 무엇입니까?
0
A
답변
3
사전은 키 값에 의해 인덱싱 된 구조에 키의 해시 값을 더 정확하게 저장합니다. 이것이 그들이 빠른 이유입니다. 그들은 값을 검색 할 필요가 없습니다. 단지 키의 has 값을 가져 와서 값에 대해 곧바로 이동합니다 (대부분의 경우, 검색해야하는 키 해쉬 값을 충돌하는 경우에만 해당).
따라서 값을 저장하는 순서는 예측할 수 없습니다. 주문이 필요한 경우 배열 또는 링크 된 목록이 필요합니다. 두 구조에는 값이 저장되는 정의 된 순서가 있습니다.
사전 형식 액세스 및 주문 보존이 필요하면 사전 지원 목록이있는 오픈 소스 라이브러리를 찾아 보거나 버전을 소유해야합니까? 사전 인터페이스를 가져 와서 구현하도록 구현하십시오 목록과 내부 사전에 동시에 저장됩니다.
접근 자 메서드는 사전으로 이동하지만 목록을 검색하고 추가 순서로 데이터를 반환하는 반복자를 제공 할 수 있습니다.
1
코코아에서 주문 사전이 없습니다. 가장 좋은 방법은 사전을 래핑하고 입력 된 키의 배열을 유지하는 사용자 지정 클래스를 만드는 것입니다. 이것은 너무 어렵지 않습니다. 잘 NSMutableDictionary
의 방법을 "포함"할 수 클래스,이 같은 일이 :
// innerDict is an NSMutableDictionary
// keyArray is an NSMutableArray
- (void)setObject:(id <NSCopying>)anObject forKey:(id)aKey {
[innerDict setObject:anObject forKey:aKey];
// Keys are added to the array in the order they go into the dictionary;
// users of the class can access the array to get this info
[keyArray addObject:aKey];
}
- (id)objectForKey:(id)aKey {
return [innerDict objectForKey:aKey];
}
- (void)removeObjectForKey:(id)aKey {
[innerDict removeObjectForKey:aKey];
[keyArray removeObject:aKey];
}
- (NSEnumerator *)keyEnumerator {
// It's actually better for users of this class to
// use fast enumeration on the keyArray; this is just an example
return [keyArray objectEnumerator];
}
, 매트 갤러거는 너무 예로서 사전 정렬 된 사용에 일어나는 tutorial on collection subclassing있다 .
관련 문제
- 1. 사전에 색인을 생성하는 방법은 무엇입니까?
- 2. 동일한 사전에 액세스하는 다른 스레드 (읽기 전용)
- 3. HashSet() 함수 데이터를 순차적으로 정렬하는 방법은 무엇입니까?
- 4. 멀티 터치를 순차적으로 감지하는 방법은 무엇입니까?
- 5. Wordpress 카테고리 ID를 순차적으로 만드는 방법은 무엇입니까?
- 6. 기본 키를 순차적으로 만드는 방법은 무엇입니까?
- 7. setTimeout() 함수를 순차적으로 사용하는 방법은 무엇입니까?
- 8. JavaScript 코드를 순차적으로 실행하는 방법은 무엇입니까?
- 9. 순차적으로
- 10. plist에서 사전에 사전을 추가하는 방법은 무엇입니까?
- 11. 사전의 배열을 배열 사전에 대조하는 방법은 무엇입니까?
- 12. 사전에 객체별로 모델 객체를 정렬하는 방법은 무엇입니까?
- 13. django 모듈을 pydiction 사전에 추가하는 방법은 무엇입니까?
- 14. 파이썬에서 사전에 목록을 추가하는 방법은 무엇입니까?
- 15. jQuery : 순차적으로 슬라이딩 패널
- 16. iPad에서 순차적으로 여러 이미지로드하기
- 17. SKPayment에서 제품 가격에 액세스하는 방법은 무엇입니까?
- 18. 활동의 레이아웃 - 큰 레이아웃에 액세스하는 방법은 무엇입니까?
- 19. json.net 배열에 액세스하는 방법은 무엇입니까?
- 20. UIImageView에 세계적으로 액세스하는 방법은 무엇입니까?
- 21. Ajax에서 소스에 액세스하는 방법은 무엇입니까?
- 22. 이 클래스에 액세스하는 방법은 무엇입니까?
- 23. TTTableViewController의 TTTableItem에 액세스하는 방법은 무엇입니까?
- 24. AS3의 루트에 액세스하는 방법은 무엇입니까?
- 25. 양식에서 DataGridView에 액세스하는 방법은 무엇입니까?
- 26. android에서 애셋에 액세스하는 방법은 무엇입니까?
- 27. FirstViewController에서 tabBarController에 액세스하는 방법은 무엇입니까?
- 28. AuditTrailInterceptor에서 데이터베이스에 액세스하는 방법은 무엇입니까?
- 29. GPU에 직접 액세스하는 방법은 무엇입니까?
- 30. 사전에 태그가 있는지 확인
일반적인 사전 클래스는 추가 시간과 공간이 필요하고 사전의 표준 유스 케이스가 아니기 때문에 삽입 순서를 기억하지 않는다고 생각합니다. 이 정보를 저장하는 사전 클래스를 작성하는 것이 좋습니다. – Christian
SDK 메서드를 사용하여 수행 할 수 없습니다. – lostInTransit
가능한 [Objective-C 사전은 순서가 지정된 컨테이너입니까?] (http://stackoverflow.com/questions/1648059/is-the-objective-c-dictionary-anordord-container) – outis