[Unity]/[C#]

[C# 기초] #11 : Collection(List, ArrayList)

극꼼 2021. 7. 16. 17:50
반응형


안녕하세요! 극꼼입니다!

오늘부터는 Collection중 List와 ArrayList에 대해 배워보겠습니다 ㅎㅎ

* Collection : https://geukggom.tistory.com/95

 

[서론]

자료구조 : 데이터를 구조적으로 구현하는 알고리즘

Collection : C#에서 지원하는 자료구조 클래스. List, ArrayList, Dictionary, HashTable, Stack, Queue 등이 있음.  

 

서로 유사한 자료구조인 ListArrayList를 먼저 살펴봅시다. 

Array  List ArrayList 
- 고정된 배열 크기 (선언시 크기를 지정해주고, 삭제 및 추가와 같은 변형이 불가능하다.)
- 같은 타입만 저장가능
- 다차원 배열 입력이 가능
- 배열크기가 고정되지 않음(삭제, 추가 가능)
- 같은 타입끼리만 저장 가능. 따라서 박싱, 언박싱이 발생하지 않음. - 서로 다른 타입의 데이터를 배열에 저장 가능. 따라서 데이터를 가져올 때 박싱, 언박싱이 발생함.

 


[List]

1. List 선언

List<데이터타입> 변수이름 = new List<>();

리스트를 처음 선언했을 때, 리스트의 길이는 0입니다.

여기에 Add 키워드를 사용해서 리스트 안에 데이터를 입력해줍니다.

 

2. Add(배열 추가)

List<string> myString = new List<>();
myString.Add("one");
myString.Add("two");
myString.Add("three");

myString :  [0]"one", [1]"two", [2]"three"

새로 추가하는 데이터값들은 배열의 뒤에 추가됩니다.

 

3. Index(배열 삽입)

myString.Insert(0,"Insert");

0번 인덱스에 "Insert"를 삽입해줍니다.

기존의 0번 인덱스에 있던 데이터값은 1번 인덱스로 가는 등, 하나씩 뒤로 밀려나게 됩니다.

myString :  [0]"Insert", [1]"one", [2]"two", [3]"three"

 

4. Remove, RemoveAt(배열 삭제)

myString.Remove("two");   //데이터를 찾아서 삭제. myString :  [0]"Insert", [1]"one", [2]"three"
myString.RemoveAt(0);      //해당하는 인덱스의 데이터 삭제. myString :  [0]"one", [1]"three"

 

5. Contains(리스트 안에 데이터가 있는지 찾아서 true/false 반환)

Debug.Log(myString.Contains("three"));   //true 출력.

 

6. BinarySearch(List안의 데이터가 몇번 인덱스에 있는지 인덱스를 반환)

Debug.Log(myString.BinarySearch("three"));   //1번 출력. 

 

7. Clear(리스트 초기화)

myString.Clear();
Debug.Log(myString.Count);   //0개 출력.

 

8. Sort(정렬)

: 배열을 정렬해주는 함수입니다.

int 타입이라면 오름차순으로, string(또는 char) 타입이라면 알파벳순으로 정렬해줍니다.

 

[ArrayList]

ArrayList는 List와 유사한 자료구조입니다. 

List와 다른 점은, List는 선언할 때 데이터타입이 고정되지만, ArrayList는 여러 데이터타입을 넣을 수 있다는 점입니다.

따라서 ArrayList를 사용할 경우 성능이 더 많이 저하되며, 특별한 경우를 제외하고는 잘 사용하지 않습니다.

ArrayList item = new ArrayList();
item.Add("string");
item.Add(3);
item.Add('c');
// item : [0]"string", [1]3, [2]'c'  (이와 같이 여러 종류의 데이터를 모두 넣을 수 있습니다.)
반응형