[TIL] 컬렉션(Collection)

백성은·2025년 4월 15일

TIL

목록 보기
13/34

✅ 컬렉션이란?

컬렉션(Collection)은 자료를 모아 놓은 데이터 구조이다.
단순히 값을 저장뿐 아니라 추가, 삭제, 검색 등의 작업을 수행할 수 있도록 다양한 메서드와 속성을 제공한다.

컬렉션의 특징

  • 배열과 비슷한 자료 구조
  • 크기가 가변적
  • C#에서는 다양한 종류의 컬렉션을 제공
  • 사용하기 위해서는 System.Collections.Generic 네임스페이스 추가

✅ 주요 컬렉션

1. List

List의 특징

  • 제네릭 클래스로, 특정 타입을 지정해 타입 안정성을 보장
  • 타입이 명확하므로 값을 가져올 때 형변환이 필요가 없다
  • 배열처럼 인덱스를 이용해 값을 가져올 수 있지만, 크기가 자동으로 늘어나는 구조로 배열보다 유연하다.

List 사용예시

	List<string> animals = new List<string>(); // string형 리스트 생성
    animals.Add("개"); // 리스트에 값 추가
    animals.Add("고양이");
    animals.Add("돼지");
    // 결과 : ["개", "고양이", "돼지"]
    
    animals.Remove("돼지"); // 리스트에 값 삭제
    // 결과 : ["개", "고양이"]
    
    foreach(string animal in animals)
    {
    	Console.WriteLine(animal);
        /* 결과 :
           개
           고양이 */
    }
    

주요 메서드 및 속성

메서드 / 속성설명
Add(item)요소 추가
Insert(index, item)원하는 인덱스에 삽입
Remove(item)특정 값 제거
RemoveAt(index)특정 인덱스 값 제거
Contains(item)포함 여부 확인(true / false)
Count요소 개수
Clear()전체 제거
IndexOf(item)특정 값 인덱스 반환

2. Dictionary

Dictionary의 특징

  • 키값과 밸류값을 쌍으로 갖는 컬렉션
  • 인덱스로 접근하는 게 아니라, 고유한 키로 접근
  • 중복된 키를 가질 수 없다
  • 키를 통해 값을 빠르게 찾을 수 있다

Dictionary 사용예시

	Dictionary<string, int> age = new Dictionary<string, int>();
    // 빈 딕셔너리 생성
    
    age.Add("철수", 25); // 값 추가
    age.Add("영희", 22);
    age.Add("영수", 23);
    
    Console.WriteLine(age["철수"]); // 결과 : 25
    
    if(age.ContainsKey("영희")) // 키 값이 있는지 확인
    {
    	Console.WriteLine("영희의 나이는 " + age["영희"]);
        // 결과 : 22
    }
    
    age["영수"] = 24; // 값 수정
    
    foreach(KeyValuePair<string, int> pair in age)
    {
    	Console.WriteLine($"{pair.Key} : {pair.Value}");
        /* 결과 : 철수 : 25
		  	 	 영희 : 22
       		 	 영수 : 24 */
    }
    

주요 메서드 및 속성

메서드 / 속성설명
Add(key, value)키,값 추가
Remove(key)특정 키 삭제
ContainsKey(key)키 존재 여부 확인
ContainsValue(value)값 존재 여부 확인
Count요소 개수 반환
Clear()모든 요소 삭제
Keys모든 키 조회
Values모든 값 조회

3. Stack

Stack의 특징

  • 후입선출(Last-In-First-Out, LIFO) 방식의 자료 구조
  • 메서드 이름이 직관적(Push, Pop, Peek)

Stack 사용예시

	Stack<int> stack = new Stack<int>(); // int형 Stack 생성
    stack.Push(1); // Stack에 요소 추가
    stack.Push(2);
    stack.Push(3);
    
    // Stack에서 요소 가져오기
    int value = stack.Pop(); // value : 3

주요 메서드 및 속성

메서드 / 속성설명
Push(item)스택에 값 추가
Pop()스택에서 값 꺼내고 제거
Peek()가장 위의 값 확인 (제거X)
Count요소 개수
Clear()모든 요소 삭제
Contains(item)특정 값 포함 여부 확인

4. Queue

Queue의 특징

  • 선입(First-In-First-Out, FIFO) 방식의 자료 구조
  • 줄 서기, 순번 처리 등에 적합

Queue 사용예시

	Queue<int> queue = new Queue<int>(); // int형 Queue 생성
    queue.Enqueue(1);
    queue.Enqueue(2);
    queue.Enqueue(3);
    
    int value = queue.Dequeue(); // value : 1

주요 메서드 및 속성

메서드 / 속성설명
Enqueue(item)큐에 값 추가
Dequeue()큐에서 값 꺼내고 제거
Peek()맨 앞의 값 확인 (제거X)
Count요소 개수
Clear()모든 요소 삭제
Contains(item)특정 값 포함 여부 확인

5. HashSet

HashSet의 특징

  • 중복을 허용하지 않는다
  • 데이터의 순서를 보장하지 않는다

HashSet 사용예시

	HashSet<int> set = new HashSet<int>(); // int형 HashSet 생성
    set.Add(1); // 요소 추가 
    set.Add(2);
    set.Add(1); // 중복된 값 추가되지 않음
    
	foreach(int element in set)
    {
    	Console.WriteLine(element);
        // 결과 : 1, 2
    }

주요 메서드 및 속성

메서드 / 속성설명
Add(item)값 추가
Remove(item)특정 값 제거
Count요소 개수
Clear()모든 요소 삭제
Contains(item)특정 값 포함 여부 확인
profile
게임 개발일지

0개의 댓글