책 정리/Effective C#
item 40, 적절한 collection 개체를 이용하라
최익필
2010. 8. 14. 14:45
이 포스트를 만든 목적
- 공부 하려고
이 포스트의 준비물
- gVim 7.2 (vim 7.3f 가 나왔다.)
- Microsoft Visual C# 2010 Express
- Syntax Highlighter 3.
참조 서적
- Effective C#
- 소설같은 C# 3판
참조 링크
- http://msdn.microsoft.com/ko-kr/library/ms379564%28VS.80%29.aspx
- C# Generics 에 대해서 설명 되어 있다.
- http://msdn.microsoft.com/en-us/library/0sbxh9x2.aspx
- System.Collections.Generics Namespace 기준으로 클래스, 인터페이스, 컬렉션을 설명한다.
- http://kimstar.pe.kr/blog/100
- C# Generic Collection 종류에 대해서 설명 되어 있다.
내용
Generic collection 사용을 권장하고 있기 때문에, Generic collection 만 이야기 한다.
Collection 을 왜 이용 하는가?
- 프로그램 실행 중 데이터가 추가되거나 삭제 될 때, 해당 데이터를 손쉽게 관리하기 위해서
어떤 Generic Collection 이 있는가?
- List<T> - http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx
- SortedList<TKey, TValue> - http://msdn.microsoft.com/en-us/library/ms132319.aspx
- LinkedList<T> - http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx
- Dictionary<TKey, TValue> - http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
- SortedDictionary<TKey, TValue> - http://msdn.microsoft.com/en-us/library/f7fta44c.aspx
- HashSet<T> - http://msdn.microsoft.com/en-us/library/bb359438.aspx
- SortedSet<T> - http://msdn.microsoft.com/en-us/library/dd412070.aspx
- Queue<T> - http://msdn.microsoft.com/en-us/library/7977ey2c.aspx
- Stack<T> - http://msdn.microsoft.com/en-us/library/3278tedw.aspx
- SynchronizedCollection<T> - http://msdn.microsoft.com/en-us/library/ms668265.aspx
- SynchronizedKeydCollection<K, T> - http://msdn.microsoft.com/en-us/library/ms668294.aspx
- SynchronizedReadOnlyCollection<T> - http://msdn.microsoft.com/en-us/library/ms404554.aspx
어떻게 적절한 Generic Collection 을 선택 하는가?
- 우선 List<T> 를 사용한다.
- 자료 구조 특성이 배열 구조가 아닐 경우, 구조를 파악하고, 각 Generic Collection 을 선택한다.
- 사실 나도 보는 내내, 필요할 때 봐야겠다고 생각했다.
- 요령으로 SortedCollection 은 이진트리 기반의 Collection 이고, Dictionary 는 Hash 기반인 사실만 알면, 선택하는데 무리가 없다.
결론
- Generic Collection 종류는 많으므로, 적절한 것을 선택하면, 좋은 성능을 만끽할 수 있다.
여담
- 필요할 때 다시 봐야지