반응형
[C# 기초] #11 : Collection(List, ArrayList)
안녕하세요! 극꼼입니다! 오늘부터는 Collection중 List와 ArrayList에 대해 배워보겠습니다 ㅎㅎ * Collection : https://geukggom.tistory.com/95 [서론] 자료구조 : 데이터를 구조적으로 구현하는 알고리즘 Collectio
geukggom.tistory.com
(출처는 위 글임을 밝힙니다.)
0. 서론
[CS] Array와 List의 차이
[자료구조] Array(배열) vs List(리스트) Goal 그래프의 기본 개념 이해 2021.12.16 - [자료구조] - [자료 구조] 자료 구조에 대한 이해 [자료 구조] 자료 구조에 대한 이해 Goal 자료 구조란 무엇인가 자료 구
bonjenny.tistory.com
Array |
ArrayList |
리스트 | |||||||
배열 크기 고정 (선언 시 크기 지정) |
배열 크기가 고정되지 않음 (삭제, 추가 가능 - 가변적) | ||||||||
논리적/물리적 저장 순서 일치 | 실제 개체의 참조는 인접한 위치, 실제 개체의 메모리 주소는 랜덤 |
실제 메모리 주소는 랜덤 | |||||||
기억 장소 미리 확보해야 함 | 기억 장소 미리 확보하지 않아도 됨 | ||||||||
삽입 / 삭제 시간복잡도 - 끝에 추가/삭제: O(1) - 중간에 삽입/삭제: O(N) |
삽입 / 삭제 시간복잡도 - 끝에 추가/삭제: O(1) - 중간에 삽입/삭제: O(N) |
삽입 / 삭제 시간복잡도 O(N) | |||||||
원소 접근 시간복잡도 O(1) | 원소 접근 시간복잡도 O(N) | ||||||||
- Cache Hit Rate가 높음 - 추가 사용하는 메모리 X |
- Cache Hit Rate가 비교적 높음 | - 빈틈없는 데이터의 적재 (이러한 메모리의 낭비는 없음) |
|||||||
- 빈 데이터가 있을 수 있음 (메모리가 낭비될 수 있음) |
- 배열 안 빈 데이터가 있을 수 있음 (메모리가 낭비될 수 있음) |
- Cache Hit Rate가 낮음 | |||||||
- 같은 타입만 저장 가능 - 다차원 배열 입력 가능 |
- 같은 타입만 저장 가능 (박싱, 언박싱 발생 X) |
- 다른 타입도 저장 가능 (박싱, 언박싱 발생 O) |
자료구조: 데이터를 구조적으로 구현하는 알고리즘
Collection: C#에서 지원하는 자료구조 클래스. List, ArrayList, Dictionary, HashTable, Stack, Queue 등 존재
1. 리스트(List)
List 선언
List<데이터타입> 변수이름 = new List<>();
리스트를 처음 선언했을 때, 리스트의 길이는 0
Add (배열 추가)
List<string> myString = new List<>();
myString.Add("one");
myString.Add("two");
myString.Add("three");
새로 추가하는 데이터값들은 배열의 뒤에 추가됨
Index (배열 삽입)
myString.Insert(0,"Insert");
기존의 0번 인덱스에 있던 데이터값은 1번 인덱스로 가는 등, 하나씩 뒤로 밀려남
Remove, RemoveAt (배열 삭제)
myString.Remove("two"); //데이터를 찾아서 삭제. myString : [0]"Insert", [1]"one", [2]"three"
myString.RemoveAt(0); //해당하는 인덱스의 데이터 삭제. myString : [0]"one", [1]"three"
Contains (리스트 안에 데이터가 있는지 찾아서 true / false 반환)
Debug.Log(myString.Contains("three")); //true 출력.
BinarySearch (리스트 안의 데이터가 몇 번 인덱스에 있는지 인덱스 반환)
Debug.Log(myString.BinarySearch("three")); //1번 출력.
Clear (리스트 초기화)
myString.Clear();
Debug.Log(myString.Count); //0개 출력.
Sort (정렬)
int 타입이라면 오름차순으로, string(또는 char) 타입이라면 알파벳순으로 정렬
2. ArrayList
ArrayList vs List
List는 데이터타입이 고정되지만, ArrayList는 여러 데이터타입을 넣을 수 있음
ArrayList item = new ArrayList();
item.Add("string");
item.Add(3);
item.Add('c');
// item : [0]"string", [1]3, [2]'c' (이와 같이 여러 종류의 데이터를 모두 넣을 수 있습니다.)
반응형
'C#' 카테고리의 다른 글
[C#] public 필드 멤버 접근 vs 프로퍼티 멤버 접근 (0) | 2023.05.19 |
---|---|
[C#] .NET 소스 레퍼런스 (0) | 2023.05.18 |
[C# to JSON] DateTime 형식 변환 (0) | 2023.05.12 |
[C#] object를 JSON 형식으로 바꾸기 (0) | 2023.05.11 |
[C#] Convert DataSet to List (0) | 2023.05.10 |