자바강의 - [6주차] 자바와 자료구조 (2)
제네릭(Generic) 프로그래밍
- 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능
- 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듬
- 따라서 제네릭을 사용하면 타입 안정성을 제공하므로 타입체크와 형변환을 생략할 수 있어 코드가 간결해짐
- 제네릭을 적용하지 않은 코드 예제
ArrayList tvList = new ArrayList();
tvList.add(new Tv());
Tv t = (Tv)tvList.get(0);
ArrayList<Tv> tvList = new ArrayList<Tv>();
tvList.add(new Tv());
Tv t = tvList.get(0);
타입 변수 <>
- 클래스 이름 옆의 ‘<>’안에 있는 알파벳을 ‘타입 변수(type variable)’라고 하며 일반적으로 ‘Type’의 첫 글자를 따서 T를 사용하지만 반드시 T를 사용해야 하는 것은 아니며 ArrayList의 경우 ‘Element(요소)’의 첫 글자를 따서 ‘E’를 사용함
- 타입 변수가 여러 개인 경우에는 Map<K, V>와 같이 콤마',’를 구분자로 나열하면 됨
<T extends 클래스>
- 제네릭 타입에
extends
를 사용하면, 특정 타입의 자손들만 대입할 수 있게 제한할 수 있음
- 인터페이스를 구현해야 하는 제약이 있어도
implements
가 아닌 extends
를 사용함
제네릭 메서드
- 메서드의 선언부에 제네릭 타입이 선언된 메서드
- 제네릭 클래스의 정의된 타입 매개변수가 ‘T’이고 제네릭 메서드에 정의된 타입 매개변수가 ‘T’이어도 이 둘은 전혀 별개의 것임
- 제네릭 메서드는 제네릭 클래스가 아닌 클래스에도 정의될 수 있음
컬렉션 프레임워크
- 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 JDK 라이브러리
- java.util 패키지에 구현되어 있음
- JDK1.2부터 컬렉션 프레임웍을 통해 다양한 종류의 컬렉션 클래스가 추가되고 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화 됨
- 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음
- 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요함
- 크게 List, Set, Map 3가지 타입으로 나눌 수 있음
List 인터페이스
- 순서가 있는 데이터의 집합
- 데이터의 중복을 허용함
- ArrayList, LinkedList, Stack, Vector 등
Set 인터페이스
- 순서를 유지하지 않는 데이터의 집합
- 데이터의 중복을 허용하지 않음
- HashSet, TreeSet 등
Map 인터페이스
- 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합
- 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용함
- HashMap, TreeMap, Hashtable, Properties 등
참고자료
Java & SpringBoot로 시작하는 웹 프로그래밍 강의 : #패스트캠퍼스 #내일배움카드 #K디지털크레딧 #바이트디그리 #자바인강
댓글 영역