사전을 사용하여 엔티티를 저장하는 상황입니다. 각 엔티티에는 값을 검색 할 때 색인화 할 ID가 두 개 있습니다. 하나는 객체가 생성 될 때 (이 ID라고 부름) 다른 하나는 외부 소스 (이 핸들을 호출 함)에서 읽혀질 때 생성됩니다. 나는 ToLookup()으로 놀았으며 매우 느리다. 두 식별자를 모두 포함하는 사용자 지정 키 개체를 만들었지 만 사전의 기본 사용은 연결된 값을 검색하기 위해 두 가지를 모두 알아야한다는 것을 의미합니다. 하나 또는 다른 것을 알고있는 경우 매우 빠른 솔루션이 필요합니다. 어떤 도움을 주시면 감사하겠습니다. 또한 내부적으로 두 개의 사전을 포함하는 클래스를 만들려고했으나 포인터 참조가 메모리 영역에 추가되는 것 같아 올바른 접근 방식인지는 확실하지 않습니다. 내가 메모리 풋 프린트에 대해 다소 걱정하는 이유 중 하나는 타사 시스템에로드 할 수 있도록 dll로 컴파일하기 때문입니다. 나는 사용할 메모리의 양을 제어하지 못하기 때문에 더 많이 사용할수록 내가 할 수있는 일은 줄어든다. 이것이 명확하지 않은 경우 나는 약간의 단순화 된 예제를 제공 할 수 있습니다. 제공 할 부분을 알려주세요.각 키만 사용하여 여러 키를 사용하여 사전에서 값 검색
0
A
답변
0
글쎄, 내가 생각하기에 최선의 타협안을 생각해 냈다. 내가 조회로 사용되는 내부 하위 사전과 기본 사전을 사용하여 끝났다. 하위 사전은 ID를 저장하고 Handle에 의해 색인화됩니다. 그런 다음 핸들에 대한 사용자 정의 인덱서를 만들고 ID 사전을 사용하여 ID를 찾은 다음 기본 인덱서를 호출하여 실제 값을 검색 할 수 있습니다. 이렇게하면 사전을 복제하는 것보다 약간 더 가벼워집니다. 그것은 다른 이상 하나를 선택의 문제가되지 않을 때까지
public class MultiKeyDictionary : Dictionary<EntityID, string>
{
private Dictionary<string, EntityID> _handleLookup = new Dictionary<string, EntityID>();
public Dictionary<string, EntityID> HandleLookup
{
get { return _handleLookup; }
set { _handleLookup = value; }
}
public string this[string handle]
{
get
{
EntityID id = this.HandleLookup[handle];
return base[id];
}
}
public void Add(EntityID id, string handle, string value)
{
base.Add(id, value);
this.HandleLookup.Add(handle, id);
}
}
0
두 가지 가능한 키 유형 중 하나만 주어진 값을 효율적으로 검색 할 수있는 유일한 방법은 두 개의 사전이 있어야하며 본질적으로 두 배의 메모리 (약)가 필요합니다. 단일 조회로 그 주위에는 실제적인 방법이 없습니다.
많은 메모리를 사용할 수없는 경우 선형 검색과 같이 훨씬 덜 효율적인 검색 알고리즘을 사용해야합니다.
당신의 선택, 실행 속도 또는 메모리입니다. 하나 골라야 해.
관련 문제
- 1. 튜플 사전에서 값 검색
- 2. 연관 배열의 키를 사용하여 값 검색
- 3. Access 2000의 컬렉션에서 키를 사용하여 값 검색
- 4. 지도 키를 사용하여 Java지도에서 객체 값 검색
- 5. Html5 IndexedDB - 키를 사용하여 값 검색
- 6. 사전에서 키를 사용하여 문자열을 검색하는 방법은 무엇입니까?
- 7. jquery를 사용하여 각 선택된 행 값 검색
- 8. IPHONE : 사전 내의 하위 사전에서 값 검색
- 9. Python은 범위 사전에서 값 검색 속도를 높입니다.
- 10. 키를 사용하여 PFObject 검색
- 11. Div의 각 값 검색
- 12. 자바 스크립트 사전에서 키를 사용하여 값을 찾는 방법
- 13. 사전에서 최대 값 할당
- 14. arrayList의 두 키를 사용하여 검색
- 15. ko.mapping을 사용하여 하나의 키만 관찰 가능하게하는 방법
- 16. 사전 키를 사용하여 값 업데이트
- 17. Hashtable을 사용하여 키만 저장 하시겠습니까?
- 18. iOS의 NSDictionary 내 사전에서 값 검색
- 19. addObjectsFromArray를 사용하여 NSMutableArray에서 값 검색
- 20. 텍스트 값 검색 키를 사용하여 하위 요소를 제거하는 방법은 무엇입니까?
- 21. 사전에서 키를 뒤쪽으로 인쇄하는 방법
- 22. 각 열마다 다른 키를 사용해야합니까?
- 23. C : 사전에서 문자열 검색
- 24. 여러 조건을 사용하여 검색
- 25. 여러 기준을 사용하여 검색
- 26. 파이썬 사전에서 하나의 키에 여러 값 추가하기
- 27. 자동 증가 외래 키를 사용하여 값 삽입
- 28. 파이썬에서 어떻게 사전에서 키를 검색 할 수 있습니까?
- 29. 외래 키를 사용하여 순차적으로 여러 테이블에서 데이터 검색
- 30. 여러 인덱스 키를 사용하여 검색 저장소를 검색하는 방법은 무엇입니까?
내가 기대했다 : 다른 사람이 관심 (또는 개선하거나 나에게 더 나은 방향을 표시하거나 다른 의견을 가지는 경우), 여기에 아주 간단한 예입니다 대신 누군가가 슬리브를 돌리면서 실행 속도와 메모리의 균형을 맞출 수 있기를 바랬습니다. – bjhuffine