STIKA
[07] 배열 , List, ArrayList, Dictionary 본문
배열 , 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 |