• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • C# 프로그래밍의 기초: SortedList
    2024년 08월 24일
    • 유니얼
    • 작성자
    • 2024.08.24.:12
    728x90

    SortedList<TKey, TValue>는 C#에서 키-값 쌍을 자동으로 정렬하여 관리하는 컬렉션입니다. 이 자료구조는 Dictionary의 빠른 검색 기능과 List의 정렬된 저장 방식을 결합하여, 데이터를 효율적으로 관리할 수 있게 해줍니다. 이 블로그 포스트에서는 SortedList의 특성, 사용 방법 및 장단점을 자세히 살펴보겠습니다.

    SortedList의 특징

    1. 자동 정렬: SortedList는 키를 기준으로 자동으로 데이터를 오름차순으로 정렬합니다. 키 값은 중복될 수 없으며, 정렬된 순서를 유지합니다.
    2. 키-값 쌍 구조: 데이터는 키-값 쌍으로 저장되며, 키를 통해 빠르게 데이터에 접근할 수 있습니다. 이는 Dictionary와 유사하지만, SortedList는 추가로 데이터 정렬 기능을 제공합니다.
    3. 인덱스 접근 가능: SortedList는 키로 데이터에 접근하는 것 외에도 인덱스를 통해 순차적으로 데이터에 접근할 수 있습니다. 이는 SortedDictionary와는 다른 특징입니다.
    4. 메모리 효율성: 비교적 메모리 사용이 효율적이지만, 요소의 삽입과 삭제 과정에서는 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바