To-do list

제네릭 & 컬렉션

제네릭(Generic)

자바 제네릭은 generic 타입 및 메소드를 정의하고 사용 할 수 있는 언어적 특성입니다.

위와같이 꺽쇠(< >)안에 클래스 타입이 명시된 패턴을 자주 발견할 수 있다. 이걸 제네릭(Generic) 이라고 부르며, 제네릭 파라미터는 꺽쇠안에 포함하여 전달한다.

● 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룬다.
● 타입에 대해 유연성과 안정성을 확보한다.
● 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술

제네릭 사용 이유?
타입을 유연하게 처리하며, 잘못된 타입 사용으로 발생할 수 있는 런타임 타입 에러를 컴파일 과정에 검출한다.
자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 합니다. 실행 시 타입 에러가 나는것보다는 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋습니다. 또한 제네릭 코드를 사용하면 타입을 국한하기 때문에 요소를 찾아올 때 타입 변환을 할 필요가 없어 프로그램 성능이 향상되는 효과를 얻을 수 있습니다.

제네릭 사용법

● 클래스, 인터페이스 또는 메소드에 선언할 수 있다.
● 동시에 여러 타입을 선언할 수 있다.
● 와일드 카드를 이용하여 타입에 대하여 유연한 처리를 가능하게 한다.
● 제네릭 선언 및 정의시에 타입의 상속 관계를 지정할 수 있다.

컬렉션(Collection)

컬렉션(collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함됩니다. 그리고 이 컬렉션들은 제네릭(generics) 형식으로 구현되어 있어 컬렉션과 함께 제네릭에 대해서도 알아둘 필요가 있습니다. 

컬렉션(collection)이란 많은 수의 데이터를 그 사용 목적에 적합한 자료구조로 묶어 하나로 그룹화한 객체를 말합니다. 자바에서는 이러한 컬렉션을 위한 인터페이스와 클래스들이 있으며 자주 사용되는 클래스들의 종류와 상속 계층도는 아래와 같습니다. 

컬렉션의 종류는 ArrayList, LinkedList, Vector, Stack, HashSet, TreeSet, HashMap, TreeMap 등이 있으며, 크게 아래와 같은 자료구조 유형에 따라 구분됩니다. 

1.List : 이름과 같이 목록처럼 데이터를 순서에 따라 관리합니다. 
2.Set : 중복이 허용되지 않는 데이터를 관리합니다. 
3.Map : 데이터를 Key와 Value로 짝을 이루어 관리하며, Key값은 중복을 허용하지 않습니다. 
4.Queue : 데이터 In / Out 순서를 FIFO 방식으로 관리합니다. (FIFO : First In First Out)
5.Stack : 데이터 In / Out 순서를 LIFO 방식으로 관리합니다. (LIFO : Last In First Out)

컬렉션의 특징

컬렉션 클래스들이 데이터를 다룰 때 그 데이터는 기본적으로 객체만 가능합니다. 따라서 char, int, float와 같은 기본형은 사용할 수 없고 대신 Wrapper클래스를 사용해야 합니다. 하지만, 오토박싱(auto boxing)과 오토언박싱(auto unboxing)으로 인해 사용자는 마치 기본형을 다룰 수 있는 것처럼 사용할 수 있습니다. 
컬렉션과 관련된 인터페이스 또는 클래스가 정의되어 있는 코드를 살펴보면 아래와 같이 제네릭(generics) 형태로 구현되어 있는 것을 확인할 수 있습니다. 따라서 사용자는 사용하고자 하는 데이터 타입을 지정하여 사용할 수 있습니다. 

profile
코린이 개발공부

0개의 댓글