배열

고정된 크기, 한 번 생성되면 크기 변경 불가능

메모리 사용 효율적

인덱스를 통한 빠른 접근 가능

 

List

제네릭 컬렉션

동적으로 크기 조절 가능

배열보단 성능면에선 떨어질 수 있음

 

ArrayList

비제네릭 컬렉션 (object 사용)

동적으로 크기 조절 가능

object형을 사용하므로 요소를 추가하거나 제거할 때 형변환 필요 - 성능 저하가 있을 수 있음

배열과 유사하게 인덱스로 요소에 접근 가능

- ArrayList 보단 사용할 수 있으면 List를 사용하는 것이 안전하고 효율적임

 

Dictionary

키-값 (각 키는 고유해야 함)

제네릭 컬렉션

동적으로 크기 조절 가능

특정 키에 대한 값을 빠르게 검색할 수 있음

 

 

Dictionary를 구현하는 법

키와 값의 형식을 지정해 선언합니다. Add메소드를 사용해 요소를 추가, Remove메소드를 사용해 요소를 지울 수 있습니다. ContainsKey나 ContainsValue로 해당하는 값이 존재하는지 확인할 수 있습니다. 또 KeyValuePair 구조체를 사용해 Dictionary를 순회할 수 있습니다.

 

Dictionary의 검색이 빠른 이유

내부적으로 해시 테이블을 사용하기 때문에 검색이 빠릅니다. 딕셔너리는 해당 키의 해시 코드를 기반으로 계산된 인덱스에 저장되며 그 Key값을 통해 검색하기 때문에 시간복잡도가 O(1)입니다.  

 

Dictionary

Add메소드를 사용해 요소를 추가할 수 있음

Remove메소드를 사용해 지정된 키값에 해당하는 요소를 지울 수 있음

KeyValuePair구조체를 사용해 key와 Value를 모두 얻을 수 있음 (foreach문 등에서 유용하게 사용)

Keys속성을 통해 key값, Values속성을 사용해 Value값을 얻을 수 있음

DictionaryName[Key] 형식을 통해 Key에 대응되는 Value값을 얻을 수 있음

ContainsKey나 ContainsValue로 존재하는지 확인할 수 있음

'취준 > 기술면접' 카테고리의 다른 글

델리게이트 (delegate)  (0) 2024.02.01
제네릭  (0) 2024.01.30
가비지 컬렉터, 가비지 컬렉션  (0) 2024.01.19
struct와 class  (0) 2024.01.17
접근제한자  (0) 2024.01.17