STIKA

[07] 배열 , List, ArrayList, Dictionary 본문

프로그래밍/개념정리

[07] 배열 , List, ArrayList, Dictionary

STIKA 2024. 3. 25. 04:04

배열 , List, ArrayList, Dictionary


 

배열은 정적배열로 이름 하나에 같은 자료형 타입인 여러개의 변수를 관리하는 것

List는 배열과 같이 Data Type을 선언 한 뒤에 변수를 관리하며, 내부적으로 동적배열을 사용

ArrayList는 List와 거의 유사하게 배열의 크기가 변경되는 특징을 갖고 동작합니다. 하지만, Data Type을 선언하지 않으며, 서로 다른 타입의 값도 추가 할 수 있습니다.

Dictionary는 key와 Value의 값을 세트로 다루는 배열 "연관 배열"이며, List와 다르게 Key값을 사용하여 Value 값을 얻을 수 있습니다. 어떤 데이터를 검색할 때 1의 시간복잡도를 가짐.

추가

List

제너릭 타입으로 박싱 언박싱이 필요없어 타입 안정성이 좋다.

리스트에 끝에서만 추가또는 삭제할 경우는 1의 시간복잡도를 갖는다

하지만 중간에 데이터를 insert하게 될 때 나머지의 데이터를 이동 시켜야 해서 n의 시간 복잡도를 가진다

insert가 많을 경우 비 효율적일 수 있다

ArrayList

제너릭 도입전 자료구조로 어떤 타입의 객체든 저장이 가능하다

박싱 언박싱이 일어나 타입 안정성이 떨어지고 성능이 떨어짐

(꼬리질문) Dictionary는 어떻게 구현해야 하나요?

Key데이터형, Value데이터형을 함께 하나의 변수명으로 선언

추가 할 때는 변수 명.Add(key값, value값);

접근 할 때는 변수 명[key값] = value값

(꼬리질문) Dictionary 검색이 빠른 이유는 무엇인가요?

해시 테이블(hash table)이라는 자료구조를 사용합니다.

해시테이블은 Key를 사용하여 고유 index를 만들어 저장하기 때문에 key값을 통해 직접 위치를 찾아가 value값을 찾을 수 있으므로 O(1) 의 평균 시간복잡도를 가짐

 

'프로그래밍 > 개념정리' 카테고리의 다른 글

[04] struct와 class의 차이  (0) 2024.03.25
[03] 접근제한자의 종류와 차이  (0) 2024.03.25
[06] 박싱과 언박싱  (0) 2024.03.25
[05] 가비지 컬렉션, 가비지 컬렉터  (0) 2024.03.25
[02] ref와 out의 차이  (1) 2024.03.25