기술면접 대비하기 #4
9. 배열과 List, ArrayList의 차이점은?
(1) 배열
고정된 크기의 요소를 저장
크기는 생성 시점에 결정되며 변경이 불가능
인덱스를 사용해 요소에 직접 접근 가능
다차원 배열도 지원
(2) 리스트
동적으로 크기 조정 가능
요소의 추가, 삭제, 수정이 자유로움
인덱스를 사용해 요소에 직접 액세스 가능
제네릭으로 구현되어 타입의 안정성 보장
단점) 내부적으로 배열을 사용하기 때문에 추가, 삭제 시점에 배열을 다시 할당하고 복사하므로 성능 저하 발생
(3) ArrayList
동적으로 크기 조정 가능
요소의 추가, 삭제, 수정이 자유로움
인덱스 사용해 요소에 직접 액세스 가능
박싱, 언박싱으로 인한 성능 저하가 발생할 수 있음
장점) List는 선언한 자료형에 맞춰 데이터를 삽입해야 하지만, ArrayList는 여러 자료형을 담을 수 있다.
단점) object 타입으로 구현되어 박싱-언박싱 과정을 거침
* List 는 Generic 에 있는 인터페이스, ArrayList 는 Collections 에 있는 인터페이스
10. 제네릭이란?
제네릭이란 객체를 정의할 때 사용하는 데이터 타입으로, 특정 타입을 확정하지 않고 타입 파라미터로 정의하는 방식이다. 유니티에서는 클래스, 인터페이스, 메서드 등에 <T> 타입 파라미터를 통해 제네릭을 사용한다.
제네릭 메서드는 여러 개의 매개변수를 가질 수 있으며, 객체의 반환 타입도 제네릭으로 설정할 수 있다.
제네릭은 object 타입에 비해 에러 발생이 적으며 성능이 좋다.
제네릭의 성능이 좋은 이유는 런타임에서 형식이 정해지는 것이 아니라 코드에서 호출할 때 데이터 형식이 정해지므로 성능 저하가 발생하지 않기 때문이다. 또한 명시적 변환보다 속도가 빠르다.
제네릭을 통해 불필요한 메서드와 클래스 구현을 줄일 수 있고 코드의 재사용성이 높일 수 있다.
*제네릭 컬렉션
컬렉션은 데이터의 검색과 저장을 위해 특화된 자료구조로 ArrayList, Hashtable, Queue, Stack 등이 있다.
제네릭 컬렉션은 제네릭을 이용한 컬렉션으로, 일반 컬렉션보다 형식 안정성이 높고 성능이 좋다.
제네릭 컬렉션은 값을 저장하기 위해 저장하는 값의 형식을 정해야 하며, 해당 타입에 맞추어 값을 저장하므로 캐스팅, 박싱-언박싱이 발생하지 않는다.
대표적인 제네릭 컬렉션 사용 예시는 GetComponent<> 이다.
MonoBehaviour > Behaviour > Component 상속 관계 때문에 유니티에서 오브젝트의 다양한 컴포넌트와 클래스를 반환할 수 있어 활용성이 매우 높다.
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
[C#] 인터페이스와 추상클래스 / 스택과 큐의 차이 (1) | 2024.01.26 |
---|---|
[Unity] 같은 scene 에서 오브젝트 간 생성 순서 정하기 (1) | 2024.01.25 |
[C#] 가비지 컬렉션 / 박싱과 언박싱 (0) | 2024.01.23 |
[C#] 구조체와 클래스 / GC (0) | 2024.01.22 |
[C#] Coroutine (0) | 2024.01.19 |
댓글