-
C# 프로그래밍의 기초: SortedList2024년 08월 24일
- 유니얼
-
작성자
-
2024.08.24.:12
728x90SortedList<TKey, TValue>는 C#에서 키-값 쌍을 자동으로 정렬하여 관리하는 컬렉션입니다. 이 자료구조는 Dictionary의 빠른 검색 기능과 List의 정렬된 저장 방식을 결합하여, 데이터를 효율적으로 관리할 수 있게 해줍니다. 이 블로그 포스트에서는 SortedList의 특성, 사용 방법 및 장단점을 자세히 살펴보겠습니다.
SortedList의 특징
- 자동 정렬: SortedList는 키를 기준으로 자동으로 데이터를 오름차순으로 정렬합니다. 키 값은 중복될 수 없으며, 정렬된 순서를 유지합니다.
- 키-값 쌍 구조: 데이터는 키-값 쌍으로 저장되며, 키를 통해 빠르게 데이터에 접근할 수 있습니다. 이는 Dictionary와 유사하지만, SortedList는 추가로 데이터 정렬 기능을 제공합니다.
- 인덱스 접근 가능: SortedList는 키로 데이터에 접근하는 것 외에도 인덱스를 통해 순차적으로 데이터에 접근할 수 있습니다. 이는 SortedDictionary와는 다른 특징입니다.
- 메모리 효율성: 비교적 메모리 사용이 효율적이지만, 요소의 삽입과 삭제 과정에서는 SortedDictionary보다 느릴 수 있습니다. 요소 삽입이나 삭제 시 내부 배열의 조정이 필요하기 때문입니다.
주요 메서드 및 속성
- Add(TKey key, TValue value): 새로운 키-값 쌍을 추가합니다.
- Remove(TKey key): 지정된 키와 관련된 요소를 제거합니다.
- ContainsKey(TKey key), ContainsValue(TValue value): 특정 키 또는 값의 존재 여부를 확인합니다.
- IndexOfKey(TKey key), IndexOfValue(TValue value): 특정 키 또는 값의 인덱스를 반환합니다.
- Keys, Values: 키 또는 값의 컬렉션을 반환합니다.
- Count: 컬렉션 내의 요소 수를 반환합니다.
전체예제 코드
using System; using System.Collections.Generic; namespace CSharp_ProgramingStudy.Chapter6_DataStructure { public class Class9 { public void Run() { // SortedList 생성 SortedList<int, string> students = new SortedList<int, string>(); // 키-값 쌍 추가 students.Add(101, "Alice"); students.Add(103, "Charlie"); students.Add(102, "Bob"); // 자동으로 정렬된 키-값 쌍 출력 Console.WriteLine("SortedList elements:"); foreach (KeyValuePair<int, string> student in students) { Console.WriteLine($"ID: {student.Key}, Name: {student.Value}"); // 출력 순서: ID: 101, Name: Alice // ID: 102, Name: Bob // ID: 103, Name: Charlie } // 특정 키를 사용하여 값에 접근 Console.WriteLine($"Student with ID 102: {students[102]}"); // 출력: Student with ID 102: Bob // 키를 사용하여 요소 제거 students.Remove(103); // 요소 제거 후 SortedList 출력 Console.WriteLine("After removing ID 103:"); foreach (KeyValuePair<int, string> student in students) { Console.WriteLine($"ID: {student.Key}, Name: {student.Value}"); // 출력 순서: ID: 101, Name: Alice // ID: 102, Name: Bob } // 특정 키가 포함되어 있는지 확인 Console.WriteLine($"Contains key 101: {students.ContainsKey(101)}"); // 출력: Contains key 101: True // 특정 값이 포함되어 있는지 확인 Console.WriteLine($"Contains value 'Charlie': {students.ContainsValue("Charlie")}"); // 출력: Contains value 'Charlie': False // 인덱스를 통해 요소 접근 Console.WriteLine($"First student: {students.Values[0]}"); // 출력: First student: Alice } } }
결론
SortedList<TKey, TValue>는 데이터를 정렬된 상태로 관리해야 할 때 유용한 자료구조입니다. 그러나 삽입 및 삭제 연산이 자주 발생하는 애플리케이션에서는 성능 저하를 고려해야 합니다. 데이터의 정렬 상태를 유지하면서 효율적인 접근을 제공하기 때문에, 특정 애플리케이션에서는 매우 적합할 수 있습니다. 데이터 구조의 선택은 항상 해당 애플리케이션의 요구 사항에 맞게 고려되어야 합니다.
반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)