본문 바로가기

C#

[C#] ArrayList와 List의 차이

반응형
 

[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'  (이와 같이 여러 종류의 데이터를 모두 넣을 수 있습니다.)
반응형