자바 컬렉션
컬렉션은 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너 이다. 컬렉션 클래스는 개발자가 바로 사용할 수 있는 것들로서, Vector<E>와 ArrayList<E>는 가변 크기의 배열을 구현하며, LinkedList<E>는 노드들이 링크로 연결되는 리스트를 구현한다. Stack<E>는 스택을 구현하며 HashSet<E>는 집합을 구현한다. 이들은 모두 Collection<E>를 상속받고, 단일 클래스의 객체만을 요소로 다루는 공통점이다. HashMap<K,V>는 키(K)와 값(V)의 쌍으로 이루어지는 데이터를 저장하고, 키로 쉽게 검색하도록 만든 컬렉션이다.
Vector<int> v = new Vector<int>()) // int로 생성 불가능
Vector<Integer> v = new Vector<Integer>(); // 정상적으로 생성
제네릭의 기본 개념
제네릭은 모든 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 타입 매개변수를 이용하여 선언하는 기법이다. 자바의 제네릭은 클래스 코드를 찍어내듯이 생산할 수 있도록 일반화(generic)시키는 도구이다. Stack<E>클래스의 예를 들어보자. Stack<E>에서 E에 구체적인 타입을 지정하면, 지정된 타입만 다룰 수 있는 구체화된 스택이 된다. 예를 들어, Stack<Integer>는 Integer 타입만 다루는 스택이 되고, Stack<Point>는 Point 타입의 객체만 Push하고 Pop할 수 있는 스택이 된다.
제네릭 타입 매개변수
컬렉션 클래스에서 타입 매개변수로 사용하는 문자는 다른 변수와 혼동을 피하기 위해 일반적으로 하나의 대문자를 사용한다.
E : Element를 의미하며 컬렉션에서 요소임을 나타냄.
T : Type을 의미
V: Value를 의미
K : Key를 의미
Static <T> void toStack(T[] a, GStack<T> gs){}
String[] sArray = new String[100];
GStackt<String> stringStack = new GStack<String>();
GenericMethod.toStack( sArray , stringStack );
T 매개변수가 Object로 유추된다. Object가 String의 슈퍼클래스이기 때문에 컴파일러는 Object타입으로 유추한다.
'Java' 카테고리의 다른 글
Wrapper 클래스 (0) | 2022.07.25 |
---|