JAVA :: 컬렉션과 제네릭
📝 컬렉션
💬 요소라고 불리는 객체들의 삽입, 삭제, 검색 기능을 갖춘 가변 크기의 컨테이너
💡 특징
💬 컬렉션은 제네릭이라는 기법으로 구현되어 있다. 때문에, 컬렉션 클래스나 인터페이스 이름에는 타입 매개 변수가 항상 포함된다.
⚠ 컬렉션을 생성하고 사용할 때는 오직 한 타입의 값만 저장하고 다룬다.
💬 컬렉션의 요소는 객체 (ex. Integer, String)들만 가능하다.
Vector<int> v = new Vector<int>(); // 컴파일 오류. int는 사용 불가
Vector<Integer> v = new Vector<Integer>();
💡 타입 매개 변수
💬 <E>
, <T>
, <K>
등을 말하며, 컬렉션의 요소를 일반화시킨 타입이다.
💬 컬렉션이 다룰 수 있는 원소의 타입을 여러 종류로 변신할 수 있도록 사용한다.
⚠ 이때 안에 있는 E, T, V 등을 제네릭 타입이라고 부른다.
💬 타입 매개 변수에는 구체적인 타입 (ex. Integer, String)을 지정하여 사용한다.
📝 제네릭
💬 모든 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 일반화된 타입 매개 변수를 이용하여 선언하는 기법
💡 제네릭 타입 매개 변수
✔ E : Element를 의미
✔ T : Type을 의미
✔ V : Value을 의미
✔ K : Key을 의미
💡 제네릭 클래스
💬 제네릭 클래스를 선언하는 방법은 기존의 클래스 선언 방법에서, 클래스 이름 다음에 일반화된 타입의 매개 변수를 <와 >사이에 추가한다는 차이가 있다.
💬 제네릭 클래스 작성
타입 매개 변수 T를 가진 제네릭 클래스 Myclass 선언
public class MyClass<T> { //제네릭 클래스 MyClass, 타입 매개 변수 T
T val; // 변수 val의 타입은 T
void set(T a) {
val = a; // T 타입의 값 a를 val에 지정
}
T get() {
return val; // T 타입의 값 val 리턴
}
}
💬 제네릭 객체 생성 및 활용
구체적인 타입을 대입하고 구체적인 객체를 생성
MyClass<String> s = new MyClass<String>(); // 제네릭 타입 T를 String으로 구체화
s.set("apple");
System.out.println(s.get()); // "apple" 출력
MyClass<Integer> n = new MyClass<Integer>(); // 제네릭 타입 T를 Integer으로 구체화
n.set(3);
System.out.println(n.get()); // 5 출력
Reference
명품 자바 에센셜 (2014, 황기태)
Author And Source
이 문제에 관하여(JAVA :: 컬렉션과 제네릭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ro_sie/JAVA-컬렉션과-제네릭저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)