본문 바로가기

카테고리 없음

컬렉션(Collection)과 제네릭(Generic), 명품 자바 프로그래밍 7장

728x90
반응형

* 컬렉션(Collection)은 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너(container)이다.  즉, 요소(element) 객체들의 저장소

배열과의 차이 ) 

1. 요소의 개수에 따라 크기 자동 조절

2. 요소의 삽입, 삭제에 따른 요소의 위치 자동 이동

장점 )

1. 고정 크기의 배열을 다루는 어려움 해소

2. 다양한 객체들의 삽입, 삭제, 검색 등의 관리 용이

 

컬렉션 인터페이스와 클래스

특징)

1. 컬렉션은 제네릭(Generic)이라는 기법으로 만들어져 있다. 컬렉션 클래스의 이름에는 '타입 매개 변수'인 <E>, <K>, <V> 등이 항상 포함된다. Vector<Integer> 혹은 Vector<String>과 깉이 구체적인 타입을 지정하면 해당 자료형만 저장하는 벡터로 사용할 수 있다. 하지만 특정 타입만 다루지 않고 여러 종류의 타입으로 변신할 수 있도록, 컬렉션을 일반화 시키기 위해 <E>와 같이 타입 매개변수를 사용한다.

 

2. 컬렉션의 요소는 객체들만 가능하다.

Vector<int> v = new Vector<int>(); // 컴파일 오류. int는 사용 불가
Vector<Integer> v = new Vector<Integer>(); // 정상코드

하지만, 기본 타입의 값이 삽입되면 자동 박싱(auto boxing)에 의해 Wrapper 클래스 타입으로 변환되어 객체로 저장된다.

 

* 자바의 제네릭은 클래스 코드를 찍어내듯이 생산할 수 있도록 일반화(generic)시키는 도구이다.

즉, 특정 타입만 다루지 않고, 여러 종류의 타입으로 변신할 수 있도록 클래스나 메소드를 일반화시키는 기법

제네릭 Stack<E>를 특정 타입으로 구체화(specialization)한 경우

 

* 컬렉션 클래스에서 타입 매개변수로 사용하는 문자는 다른 변수와 혼동을 피하기 위해 일반적으로 하나의 대문자를 사용한다.

관용적인 문자 )

E: Element

T: Type

V: Value

K: Key

반응형