안녕하세요!
게임개발자가 되기위해 공부하고있는 구구입니다.
오늘은 List에 대해 알아보도록 하겠습니다.
- 리스트(List)
- ArrayList - 내부적으로 배열을 사용
- LinkedList - 링크 포인터를 사용
- List<T> - 제네릭 타입
- 리스트를 다른말로 Dynamic Array라고 부름.
- ArrayList의 선언 방법
ArrayList list = new ArraList();
- ArrayList의 특징
- 데이터의 추가 삭제가 자유롭다.
- 데이터 타입에 관계없이 삽입 가능. (효율이 좋지 못함)
- 생성 시 크기를 지정하지 않음.
- 배열보다 속도는 느림.
- 배열은 Length를 이용해서 배열의 길이를 파악했다면 List는 Count를 이용해서 요소의 수를 확인함.
ex) list.Count(요소의 수)
- Boxing
- 값 형식을 참조형식으로 변환하는 것
- Unboxing
- 참조형식을 값형식으로 변환하는 것
- List<T>(Generic List) 의 선언방법
List<string> MusicList = new List<string>();
List<int>, List<string[]>
- 저장할 데이터 타입을 T에 인자값으로 넘김
- 실제 arrayList보다 제너릭 리스트를 사용하라고 권장을 많이 함.
- 활용 메소드
Add : 객체를 ArrayList 끝부분에 추가
Contains : 해당 데이터가 있는지 확인 후 bool값 반환
Insert : ArrayList에 저장된 인덱스에 데이터를 삽입( List.Insert(int index, object value); )
Remove : 지정된 값을 찾아서 삭제
RemoveAt : 지정된 인덱스 삭제(전체 길이가 줄어들음)
Sort : ArrayList에 포함된 데이터를 정렬 (데이터 타입이 동일할 경우) (거꾸로 출력하고 싶으면 for문으로 바꾸기.)
- 활용 프로퍼티
Count : ArrayList에 데이터의 총 개수
Capacity : ArrayList에 저장할 수 있는 저장공간의 수 설정
- Linked List
- ArrayList : 메모리에 할당받을때 연속적으로 공간을 차지함.(하나하나의 저장공간을 element라 부름)
- Linked List : 메모리에서 떨어져있지만 링크포인트로 인해 연결됨.(하나하나의 저장공간을 Node라 부름)
- Linked List 특징
- 추가 데이터에 대한 연산 불필요(추가와 제거가 쉬움)
- 구현이 어려움
- 탐색 연산의 비용이 높음
- Singly Linked List 구조
- Singly Linked List 특징
- 이전노드는 없지만 다음 노드의 링크포인트를 가지고 있음
- 데이터 자체는 Doubly Linked List 보다 작음(이전 노트 링크 포인트가 없기 때문)
- SinglyLinkedList 로 호출
ex) SinglyLinkedList<int> list = new SinglyLinkedList<int>();
- Doubly Linked List(이중 연결 리스트)
- Doubly Linked List 특징
- 양방향 탐색이 가능
- 노드에 이전 노드와 다음 노드를 가리키는 포인터를 가지고 있음
- First(첫번째 노드 호출 가능)
- LinkedList로 호출
ex) LinkedList<int> number = new LinkedList<int>();
LinkedList<T>
- AddFirst
- AddLast
- AddAfter
- AddBefore
- Doubly Circular Linked List(원형 연결 리스트)
- Doubly Circular Linked List 특징
- 처음과 마지막 노드를 서로 연결
- 마지막 노드의 Next는 첫번째 노드를 가리키고 있음
- 첫번째 노드의 Previous는 마지막 노드를 가리키고 있음
마지막 정리
- ArrayList, List<T>
- 데이터 검색에 유리
- 데이터 추가/삭제가 느림
- LinkedList<T>
- 데이터 추가/삭제가 빠름
- 데이터 검색이 느림
'게임 개발 공부 > 자료구조' 카테고리의 다른 글
알고리즘 1(재귀호출) (0) | 2022.01.02 |
---|---|
선형 자료구조 5(해쉬테이블 & 딕셔너리) (0) | 2022.01.01 |
선형 자료구조 4 (큐) (0) | 2021.12.31 |
선형 자료구조 3 (스택) (0) | 2021.12.30 |
선형 자료구조 1(배열) (0) | 2021.12.16 |
댓글