(C#, 유니티) List와 Dictionary의 차이
List와 Dictionary는 게임에서 자주 사용되는 컬렉션으로 데이터를 저장하는 자료구조이다. 이때 해당 두 개의 비슷하지만 다른 용도를 잘 파악하고 써야 게임을 플레이할 때의 프레임 저하를 막을 수 있다.
List의 경우 데이터가 순차적으로 저장되며 서로 연결되어 있다. 따라서 반복문 사용 시에 용이하고, 동적으로 크기를 조절할 수 있기에 크기를 지정해 줄 필요가 없고 데이터를 찾는 기능 또한 잘 구비되어 있어서 사용이 편리하다, 하지만 데이터의 크기가 커질수록 원하는 데이터를 찾을때 순차적으로 다 탐색하여 찾기에 시간이 오래 걸리고, 동적으로 크기를 조절할 때에도 성능의 저하가 발생할 수 있다.
Dictionary의 경우 key와 value를 가지고 key를 이용하여 값을 찾을 수 있는 특성을 가지고 있다. 이것 또한 동적으로 크기가 조절이 되고 제네릭 클래스로 제공이 되어 자료형의 제한이 없다는 장점과, 데이터가 연속적으로 된 구조가 아니라는 특징이 있다. 따라서 반복문 사용에 적합하지 않고 key값을 이용하여 데이터를 찾는 방식이기에 특정 key 값을 이용하여 데이터를 찾는 방식 이기에 데이터양이 많아질수록 장점이 발휘되는 컬렉션이다.
사실 이번에 인벤토리 시스템을 만들면서 아이템 데이터를 관리하던 도중, List와 Dictionary의 사용에 있어서 형식이 더 짧고 간결한 List를 사용하는 것이 아니라 Dictionary를 대부분 사용하는 모습에 궁금증이 생기게 되어 각각의 장단점과 정확한 구조를 알고 갈 필요가 있다고 생각하였기에 찾아보게 되었고.
결론은 해당 코드에서의 아이템 정보는 List 가 아니라 Dictionary를 통해서 관리하는 것이 적합하다는 결론에 도달하였다.