Dictionary<string, object > 를 인덱스로 불러오고 싶어서 고민
for문 안에서 굴리고 싶어서임
그냥 Dictionary<int, string> 하나 더 만들고 이런식으로 클래스를 만들까?
public class MyDictionary{
private Dictionary dic<string, object> = new Dictionary dic<string, object>;
private Dictionary dicIndex<int, string> = new Dictionary dicIndex<int, string>;
public void Add(int index, string key, object value){
// dic에 추가
// dicIndex에 추가
}
}
}
이런식으로
GetValue(string or int) // 오버로딩
Remove(string or int)
GetIndexByKey
GetKeyByIndex
등등 만들면 되나?
dict.Values.ElementAt(int), dict.Keys.ElementAt(int)로 되긴 되는데 딕셔너리에서 인덱스를 쓰려는건 자료구조의 목적이랑 안맞음. 차라리 설계를 다시 고민하셈.
단순히 순회를 하고싶은겨면 foreach를 쓰면 되고
예를 하나 들자면 503번째에서 522번째까지 for문으로 순회하고 싶음.. 검색이랑 인덱스접근이 모두 O(1) 인 자료구조가 있을까?
ElementAt이랑 관련해서 Linq는 그냥 뭔가 쓰기 좀 찝찝하긴 한데 최신버전이면 별 상관 없겠지?
C#은 pair 비슷한거 없냐
가끔 이런거 필요할때가 있긴 하드라. 본문처럼 컨테이너 두개 조합해서 인덱싱이랑 찾기 둘다 가능하게 하면 됨... 근데 본문엔 딕셔너리 두개인데 인덱스로 찾는건 리스트로 하는게 더 좋을거 같아
그리고 리스트 원소도 string 말고 그냥 object로
인덱스 넣는 거는 그냥 리스트로해.
딕셔너리 키값만 가져오는 명령이 있었는데 찾아봐라. 근데 이거 많이 느리다.
차라리 클래스 하나를 index랑 object있는걸 하나 파고 그걸 제너릭 리스트로 만들어서 갖다 쓰면 되잖아
SortedList<TKey, TValue> 사용하세요