[C#] Collection 컬렉션//Generic Collection


http://mrw0119.tistory.com/16위사이트를 참고하여 개인공부용도로 내용정리하였습니다.


C++의  STL처럼  C#에서 지원하는 자료구조(박싱 언박싱 성능부하문제로 잘안쓴다, 
주로 제네릭을 쓴다)




1. ArrayList 
-배열과 비슷함-[] 인덱스로 컬렉션 요소 접근-특정요소를 바로 읽고 쓸수있다-배열과는 다르게, 크기지정없이 요소 추가 삭제에 따라   자동으로 늘렸다 줄였다한다.-모든 타입의 변수를 담을수있다
2. 큐3. 스택
4.해쉬 테이블-유니티에서 딕셔너리
배열과 접근방식유사-배열에서는 인덱스를 가지고 값에접근  vs 해쉬테이블에서는 키를 가지고 값에 접근-해싱(키값으로 주소를 산출하는 알고리즘)으로 데이터 접근,탐색속도가 거의 소요되지않음-어떤 타입(int,float,string,class)로 사용한다, 활용도가 높다.





5.컬렉션의 성능
컬렉션의 장점은 다양한타입에 대해 활용가능하다는것이는 데이터를 오브젝트형식으로 박싱해서 저장하기 때문해당 힙에 접근해 데이터를 사용할때는 언박싱해 사용한다
박싱값형식을 참조형식으로 바꾸는것
박싱메모리의 스택영역에서 힙영역으로 데이터가 복사됨복사된 데이터를 오브젝트가 참조하게 한다.(값형식->참조형식)
언박싱데이터를 힙영역에서 스택영역으로 복사하게 한다
결국 컬렉션의 데이터 입출력은, 박싱과 언박싱을 발생시키고데이터가 많아질수록 컴퓨터 성능에 상당한 부하 발생함 때문에위보다는 일반화 컬렉션을 사용한다.(제네릭)



일반적인 컬렉션은 박싱과 언박싱과정에서 쓸때없는 성능부하가 일어난다 이때문에, 일반화된 컬렉션을 사용한다. 



유니티에서 위의 사용을위해  using System.Collections.Generic; 을 추가 해야한다.

일반화 컬렉션 종류

1.List-ArrayList와 같은기능-형식매개변수 T로 타입을 지정할 필요가있다.
-동적으로 생성하는 배열과 유사 

2. 큐3.스택
4.Dictionary 
배열과 접근방식유사-배열에서는 인덱스를 가지고 값에접근  vs 해쉬테이블에서는 키를 가지고 값에 접근-해싱(키값으로 주소를 산출하는 알고리즘)으로 데이터 접근,탐색속도가 거의 소요되지않음-어떤 타입(int,float,string,class)로 사용한다, 활용도가 높다







Comments